Generated by Cython 0.29.30
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: inference.c
+0001: from itertools import compress
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_compress); __Pyx_GIVEREF(__pyx_n_s_compress); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_compress); __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_compress); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_compress, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_SIR_type_infer_line_313, __pyx_kp_u_Compute_the_maximum_a_posterior) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_SIR_type_infer_mcmc_line_658, __pyx_kp_u_Sample_the_posterior_distributi) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_SIR_type_robustness_line_1272, __pyx_kp_u_Robustness_analysis_in_a_two_di) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_SIR_type_latent_infer_line_1794, __pyx_kp_u_Compute_the_maximum_a_posterior_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_kp_u_SIR_type_latent_infer_mcmc_line, __pyx_kp_u_Sample_the_posterior_distributi_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0002: from scipy import sparse
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_sparse); __Pyx_GIVEREF(__pyx_n_s_sparse); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_sparse); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_sparse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sparse, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0003: from scipy.integrate import solve_ivp, quad
__pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_solve_ivp); __Pyx_GIVEREF(__pyx_n_s_solve_ivp); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_solve_ivp); __Pyx_INCREF(__pyx_n_s_quad); __Pyx_GIVEREF(__pyx_n_s_quad); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_quad); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_integrate, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_solve_ivp, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_quad); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_quad, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0004: from scipy.optimize import minimize, approx_fprime
__pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_minimize); __Pyx_GIVEREF(__pyx_n_s_minimize); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_minimize); __Pyx_INCREF(__pyx_n_s_approx_fprime); __Pyx_GIVEREF(__pyx_n_s_approx_fprime); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_approx_fprime); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_optimize, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_minimize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minimize, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_approx_fprime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_approx_fprime, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0005: from scipy.stats import lognorm
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_lognorm); __Pyx_GIVEREF(__pyx_n_s_lognorm); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_lognorm); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_stats, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_lognorm, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0006: from scipy.linalg import solve_triangular, rq
__pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_solve_triangular); __Pyx_GIVEREF(__pyx_n_s_solve_triangular); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_solve_triangular); __Pyx_INCREF(__pyx_n_s_rq); __Pyx_GIVEREF(__pyx_n_s_rq); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_rq); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_linalg, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_solve_triangular); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_solve_triangular, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_rq); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_rq, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0007: import numpy as np
__pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0008: from scipy.interpolate import make_interp_spline
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_make_interp_spline); __Pyx_GIVEREF(__pyx_n_s_make_interp_spline); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_make_interp_spline); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_interpolate, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_make_interp_spline); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_make_interp_spline, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0009: from scipy.linalg import eig
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_eig); __Pyx_GIVEREF(__pyx_n_s_eig); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_eig); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_linalg, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_eig); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_eig, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0010: from scipy.stats import multivariate_normal
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_multivariate_normal); __Pyx_GIVEREF(__pyx_n_s_multivariate_normal); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_multivariate_normal); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_stats, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_multivariate_normal, __pyx_t_1) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0011: from scipy.linalg.lapack import dtrtri
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_dtrtri); __Pyx_GIVEREF(__pyx_n_s_dtrtri); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dtrtri); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_linalg_lapack, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_dtrtri); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_dtrtri, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0012: from scipy.linalg import cholesky
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_cholesky); __Pyx_GIVEREF(__pyx_n_s_cholesky); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_cholesky); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_linalg, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_cholesky); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_cholesky, __pyx_t_1) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0013: cimport numpy as np
0014: cimport cython
+0015: from math import isclose
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_isclose); __Pyx_GIVEREF(__pyx_n_s_isclose); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_isclose); __pyx_t_1 = __Pyx_Import(__pyx_n_s_math, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_isclose); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_isclose, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0016: import time, sympy
__pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_Import(__pyx_n_s_sympy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sympy, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0017: from sympy import MutableDenseNDimArray as Array
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_MutableDenseNDimArray); __Pyx_GIVEREF(__pyx_n_s_MutableDenseNDimArray); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_MutableDenseNDimArray); __pyx_t_2 = __Pyx_Import(__pyx_n_s_sympy, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MutableDenseNDimArray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Array, __pyx_t_1) < 0) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0018: from sympy import Inverse, tensorcontraction, tensorproduct, permutedims
__pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Inverse); __Pyx_GIVEREF(__pyx_n_s_Inverse); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Inverse); __Pyx_INCREF(__pyx_n_s_tensorcontraction); __Pyx_GIVEREF(__pyx_n_s_tensorcontraction); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_tensorcontraction); __Pyx_INCREF(__pyx_n_s_tensorproduct); __Pyx_GIVEREF(__pyx_n_s_tensorproduct); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_tensorproduct); __Pyx_INCREF(__pyx_n_s_permutedims); __Pyx_GIVEREF(__pyx_n_s_permutedims); PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_permutedims); __pyx_t_1 = __Pyx_Import(__pyx_n_s_sympy, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Inverse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Inverse, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_tensorcontraction); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_tensorcontraction, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_tensorproduct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_tensorproduct, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_permutedims); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_permutedims, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0019: from scipy import interpolate
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_interpolate); __Pyx_GIVEREF(__pyx_n_s_interpolate); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_interpolate); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_interpolate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_interpolate, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0020: import dill
__pyx_t_2 = __Pyx_Import(__pyx_n_s_dill, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_dill, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0021: import hashlib
__pyx_t_2 = __Pyx_Import(__pyx_n_s_hashlib, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_2) < 0) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0022:
+0023: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L7_try_end;
__pyx_L2_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L3_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
__pyx_L7_try_end:;
}
0024: # Optional support for nested sampling.
+0025: import dynesty
__pyx_t_2 = __Pyx_Import(__pyx_n_s_dynesty, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_dynesty, __pyx_t_2) < 0) __PYX_ERR(0, 25, __pyx_L2_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0026: except ImportError:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); if (__pyx_t_6) { __Pyx_AddTraceback("pyross.inference", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(0, 26, __pyx_L4_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_7);
+0027: dynesty = None
if (PyDict_SetItem(__pyx_d, __pyx_n_s_dynesty, Py_None) < 0) __PYX_ERR(0, 27, __pyx_L4_except_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L3_exception_handled; } goto __pyx_L4_except_error; __pyx_L4_except_error:;
0028:
+0029: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L15_try_end;
__pyx_L10_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L11_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_L15_try_end:;
}
0030: # Optional support for MCMC sampling.
+0031: import emcee
__pyx_t_7 = __Pyx_Import(__pyx_n_s_emcee, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 31, __pyx_L10_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_emcee, __pyx_t_7) < 0) __PYX_ERR(0, 31, __pyx_L10_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0032: except ImportError:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); if (__pyx_t_6) { __Pyx_AddTraceback("pyross.inference", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 32, __pyx_L12_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2);
+0033: emcee = None
if (PyDict_SetItem(__pyx_d, __pyx_n_s_emcee, Py_None) < 0) __PYX_ERR(0, 33, __pyx_L12_except_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L11_exception_handled; } goto __pyx_L12_except_error; __pyx_L12_except_error:;
0034:
+0035: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L23_try_end;
__pyx_L18_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L19_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
__pyx_L23_try_end:;
}
0036: # Optional support for multiprocessing in the minimization function.
+0037: import pathos.multiprocessing as pathos_mp
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s__76); __Pyx_GIVEREF(__pyx_n_s__76); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s__76); __pyx_t_1 = __Pyx_Import(__pyx_n_s_pathos_multiprocessing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pathos_mp, __pyx_t_1) < 0) __PYX_ERR(0, 37, __pyx_L18_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0038: except ImportError:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); if (__pyx_t_6) { __Pyx_AddTraceback("pyross.inference", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 38, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_7);
+0039: pathos_mp = None
if (PyDict_SetItem(__pyx_d, __pyx_n_s_pathos_mp, Py_None) < 0) __PYX_ERR(0, 39, __pyx_L20_except_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L19_exception_handled; } goto __pyx_L20_except_error; __pyx_L20_except_error:;
0040:
+0041: import pyross.deterministic
__pyx_t_7 = __Pyx_Import(__pyx_n_s_pyross_deterministic, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyross, __pyx_t_7) < 0) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
0042: cimport pyross.deterministic
+0043: import pyross.contactMatrix
__pyx_t_7 = __Pyx_Import(__pyx_n_s_pyross_contactMatrix, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyross, __pyx_t_7) < 0) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0044: from pyross.utils_python import *
__pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s__76); __Pyx_GIVEREF(__pyx_n_s__76); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s__76); __pyx_t_2 = __Pyx_Import(__pyx_n_s_pyross_utils_python, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_import_star(__pyx_t_2) < 0) __PYX_ERR(0, 44, __pyx_L1_error); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0045: from libc.math cimport sqrt, log, INFINITY
+0046: cdef double PI = 3.14159265359
__pyx_v_6pyross_9inference_PI = 3.14159265359;
0047:
0048:
+0049: DTYPE = np.float
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_DTYPE, __pyx_t_7) < 0) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0050: ctypedef np.float_t DTYPE_t
typedef __pyx_t_5numpy_float_t __pyx_t_6pyross_9inference_DTYPE_t;
0051: ctypedef np.uint8_t BOOL_t
0052:
+0053: class MaxIntegratorStepsException(Exception):
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_7, __pyx_n_s_MaxIntegratorStepsException, __pyx_n_s_MaxIntegratorStepsException, (PyObject *) NULL, __pyx_n_s_pyross_inference, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MaxIntegratorStepsException, __pyx_t_7, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_d, __pyx_n_s_MaxIntegratorStepsException, __pyx_t_8) < 0) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0054: def __init__(self, message='Maximum number of integrator steps reached'):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_27MaxIntegratorStepsException_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_27MaxIntegratorStepsException_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_27MaxIntegratorStepsException_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_27MaxIntegratorStepsException_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_message = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_message,0};
PyObject* values[2] = {0,0};
values[1] = ((PyObject *)((PyObject*)__pyx_kp_u_Maximum_number_of_integrator_ste));
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message);
if (value) { values[1] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 54, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
__pyx_v_message = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.MaxIntegratorStepsException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_27MaxIntegratorStepsException___init__(__pyx_self, __pyx_v_self, __pyx_v_message);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_27MaxIntegratorStepsException___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.MaxIntegratorStepsException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__77 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__77);
__Pyx_GIVEREF(__pyx_tuple__77);
__pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_init, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 54, __pyx_L1_error)
/* … */
__pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_27MaxIntegratorStepsException_1__init__, 0, __pyx_n_s_MaxIntegratorStepsException___in, NULL, __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__79);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init, __pyx_t_8) < 0) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_tuple__79 = PyTuple_Pack(1, ((PyObject*)__pyx_kp_u_Maximum_number_of_integrator_ste)); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__79);
__Pyx_GIVEREF(__pyx_tuple__79);
+0055: super(MaxIntegratorStepsException, self).__init__(message)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MaxIntegratorStepsException); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_message) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_message); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0056:
0057: @cython.wraparound(False)
0058: @cython.boundscheck(False)
0059: @cython.cdivision(True)
0060: @cython.nonecheck(False)
+0061: cdef class SIR_type:
struct __pyx_obj_6pyross_9inference_SIR_type {
PyObject_HEAD
struct __pyx_vtabstruct_6pyross_9inference_SIR_type *__pyx_vtab;
Py_ssize_t nClass;
Py_ssize_t M;
Py_ssize_t steps;
Py_ssize_t dim;
Py_ssize_t vec_size;
double Omega;
double rtol_det;
double rtol_lyapunov;
long max_steps_det;
long max_steps_lyapunov;
long integrator_step_count;
PyArrayObject *beta;
PyArrayObject *gIa;
PyArrayObject *gIs;
PyArrayObject *fsa;
PyArrayObject *_xm;
PyArrayObject *alpha;
PyArrayObject *fi;
PyArrayObject *CM;
PyArrayObject *dsigmadt;
PyArrayObject *J;
PyArrayObject *B;
PyArrayObject *J_mat;
PyArrayObject *B_vec;
PyArrayObject *U;
PyArrayObject *flat_indices1;
PyArrayObject *flat_indices2;
PyArrayObject *flat_indices;
PyArrayObject *rows;
PyArrayObject *cols;
PyObject *det_method;
PyObject *lyapunov_method;
PyObject *class_index_dict;
PyObject *param_keys;
PyObject *_interp;
PyObject *contactMatrix;
int param_mapping_enabled;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SIR_type {
PyArrayObject *(*_get_r_from_x)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyArrayObject *);
double (*_penalty_from_negative_values)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyArrayObject *);
PyObject *(*find_fastest_growing_lin_mode)(struct __pyx_obj_6pyross_9inference_SIR_type *, double, int __pyx_skip_dispatch);
double (*_obtain_logp_for_traj)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_traj *__pyx_optional_args);
double (*_obtain_logp_for_lat_traj)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice, PyArrayObject *, double, struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_lat_traj *__pyx_optional_args);
double (*_obtain_square_dev_for_lat_traj)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice, PyArrayObject *, double);
double (*_obtain_square_dev_for_lat_traj_diff)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice, PyArrayObject *, double);
double (*_obtain_logp_for_traj_tangent)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double);
double (*_log_cond_p)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*_estimate_cond_cov)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyObject *, double, double);
PyObject *(*obtain_full_mean_cov)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, int __pyx_skip_dispatch, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov *__pyx_optional_args);
PyObject *(*interpolate_euler)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*obtain_full_mean_cov_tangent_space)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, int __pyx_skip_dispatch, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space *__pyx_optional_args);
PyObject *(*_rhs0)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyObject *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*_obtain_time_evol_op_2)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyObject *, double, double, int __pyx_skip_dispatch);
PyObject *(*_compute_dsigdt)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice);
PyObject *(*convert_vec_to_mat)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, int __pyx_skip_dispatch);
PyObject *(*compute_jacobian_and_b_matrix)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix *__pyx_optional_args);
};
static struct __pyx_vtabstruct_6pyross_9inference_SIR_type *__pyx_vtabptr_6pyross_9inference_SIR_type;
0062: """Parent class for inference for all SIR-type classes listed below
0063:
0064: All subclasses use the same functions to perform inference, which are documented below.
0065: """
0066:
0067: cdef:
+0068: readonly Py_ssize_t nClass, M, steps, dim, vec_size
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_6nClass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_6nClass_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_6nClass___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_6nClass___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->nClass); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.nClass.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1M_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1M_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1M___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1M___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.M.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5steps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5steps_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5steps___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5steps___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->steps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.steps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3dim_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3dim___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3dim___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.dim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8vec_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8vec_size_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8vec_size___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8vec_size___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.vec_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0069: readonly double Omega, rtol_det, rtol_lyapunov
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5Omega_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5Omega_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5Omega___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5Omega___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.Omega.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8rtol_det_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8rtol_det_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8rtol_det___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8rtol_det___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->rtol_det); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.rtol_det.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13rtol_lyapunov_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13rtol_lyapunov_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13rtol_lyapunov___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13rtol_lyapunov___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->rtol_lyapunov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.rtol_lyapunov.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0070: readonly long max_steps_det, max_steps_lyapunov, integrator_step_count
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13max_steps_det_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13max_steps_det_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13max_steps_det___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13max_steps_det___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->max_steps_det); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.max_steps_det.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_18max_steps_lyapunov_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_18max_steps_lyapunov_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_18max_steps_lyapunov___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_18max_steps_lyapunov___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->max_steps_lyapunov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.max_steps_lyapunov.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21integrator_step_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21integrator_step_count_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_21integrator_step_count___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_21integrator_step_count___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_self->integrator_step_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.integrator_step_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0071: readonly np.ndarray beta, gIa, gIs, fsa, _xm
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4beta_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4beta_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4beta___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4beta___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->beta));
__pyx_r = ((PyObject *)__pyx_v_self->beta);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3gIa___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3gIa___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gIa));
__pyx_r = ((PyObject *)__pyx_v_self->gIa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIs_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3gIs___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3gIs___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gIs));
__pyx_r = ((PyObject *)__pyx_v_self->gIs);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3fsa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3fsa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3fsa___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3fsa___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->fsa));
__pyx_r = ((PyObject *)__pyx_v_self->fsa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3_xm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3_xm_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3_xm___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3_xm___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->_xm));
__pyx_r = ((PyObject *)__pyx_v_self->_xm);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0072: readonly np.ndarray alpha, fi, CM, dsigmadt, J, B, J_mat, B_vec, U
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5alpha_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5alpha_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5alpha___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5alpha___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->alpha));
__pyx_r = ((PyObject *)__pyx_v_self->alpha);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2fi_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2fi_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2fi___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2fi___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
__pyx_r = ((PyObject *)__pyx_v_self->fi);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2CM_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2CM_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2CM___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2CM___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->CM));
__pyx_r = ((PyObject *)__pyx_v_self->CM);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8dsigmadt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8dsigmadt_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8dsigmadt___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8dsigmadt___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->dsigmadt));
__pyx_r = ((PyObject *)__pyx_v_self->dsigmadt);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1J_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1J_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1J___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1J___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->J));
__pyx_r = ((PyObject *)__pyx_v_self->J);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1B_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1B_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1B___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1B___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->B));
__pyx_r = ((PyObject *)__pyx_v_self->B);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5J_mat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5J_mat_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5J_mat___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5J_mat___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat));
__pyx_r = ((PyObject *)__pyx_v_self->J_mat);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5B_vec_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5B_vec_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5B_vec___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5B_vec___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->B_vec));
__pyx_r = ((PyObject *)__pyx_v_self->B_vec);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1U_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1U_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1U___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1U___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->U));
__pyx_r = ((PyObject *)__pyx_v_self->U);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0073: readonly np.ndarray flat_indices1, flat_indices2, flat_indices, rows, cols
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices1_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices1_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13flat_indices1___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13flat_indices1___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices1));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices1);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices2_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13flat_indices2___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13flat_indices2___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices2));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices2);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_12flat_indices_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_12flat_indices_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_12flat_indices___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_12flat_indices___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4rows_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4rows_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4rows___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4rows___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->rows));
__pyx_r = ((PyObject *)__pyx_v_self->rows);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4cols_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4cols_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4cols___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4cols___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->cols));
__pyx_r = ((PyObject *)__pyx_v_self->cols);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0074: readonly str det_method, lyapunov_method
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10det_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10det_method_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10det_method___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10det_method___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->det_method);
__pyx_r = __pyx_v_self->det_method;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15lyapunov_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15lyapunov_method_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_15lyapunov_method___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_15lyapunov_method___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->lyapunov_method);
__pyx_r = __pyx_v_self->lyapunov_method;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0075: readonly dict class_index_dict
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16class_index_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16class_index_dict_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_16class_index_dict___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_16class_index_dict___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->class_index_dict);
__pyx_r = __pyx_v_self->class_index_dict;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0076: readonly list param_keys, _interp
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10param_keys_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10param_keys_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10param_keys___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10param_keys___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->param_keys);
__pyx_r = __pyx_v_self->param_keys;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7_interp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7_interp_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_7_interp___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_7_interp___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->_interp);
__pyx_r = __pyx_v_self->_interp;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0077: readonly object contactMatrix
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13contactMatrix_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13contactMatrix_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13contactMatrix___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13contactMatrix___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->contactMatrix);
__pyx_r = __pyx_v_self->contactMatrix;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0078: readonly bint param_mapping_enabled
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21param_mapping_enabled_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21param_mapping_enabled_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_21param_mapping_enabled___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_21param_mapping_enabled___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->param_mapping_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.param_mapping_enabled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0079:
+0080: def __init__(self, parameters, nClass, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_8SIR_type_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_8SIR_type_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_nClass = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_nClass,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nClass)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 1); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 2); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 3); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 4); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 5); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 6); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 7); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 8); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 9); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 10); __PYX_ERR(0, 80, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 11:
if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, 11); __PYX_ERR(0, 80, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 80, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
}
__pyx_v_parameters = values[0];
__pyx_v_nClass = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_Omega = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
__pyx_v_rtol_det = values[8];
__pyx_v_rtol_lyapunov = values[9];
__pyx_v_max_steps_det = values[10];
__pyx_v_max_steps_lyapunov = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 80, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type___init__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_nClass, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_8SIR_type___init__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_nClass, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
PyObject *__pyx_v_r = NULL;
PyObject *__pyx_v_c = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_r);
__Pyx_XDECREF(__pyx_v_c);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0081: self.Omega = Omega
__pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_Omega); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 81, __pyx_L1_error) __pyx_v_self->Omega = __pyx_t_1;
+0082: self.M = M
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_M); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error) __pyx_v_self->M = __pyx_t_2;
+0083: self.fi = fi
if (!(likely(((__pyx_v_fi) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fi, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 83, __pyx_L1_error) __pyx_t_3 = __pyx_v_fi; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->fi); __Pyx_DECREF(((PyObject *)__pyx_v_self->fi)); __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0084: assert steps >= 2, 'Number of steps must be at least 2'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_3 = PyObject_RichCompare(__pyx_v_steps, __pyx_int_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 84, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_4)) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Number_of_steps_must_be_at_least);
__PYX_ERR(0, 84, __pyx_L1_error)
}
}
#endif
+0085: self.steps = steps
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_steps); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 85, __pyx_L1_error) __pyx_v_self->steps = __pyx_t_2;
+0086: self.set_params(parameters)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0087: self.det_method=det_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_det_method))||((__pyx_v_det_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_det_method)->tp_name), 0))) __PYX_ERR(0, 87, __pyx_L1_error) __pyx_t_3 = __pyx_v_det_method; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_method); __Pyx_DECREF(__pyx_v_self->det_method); __pyx_v_self->det_method = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+0088: self.lyapunov_method=lyapunov_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_lyapunov_method))||((__pyx_v_lyapunov_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_lyapunov_method)->tp_name), 0))) __PYX_ERR(0, 88, __pyx_L1_error) __pyx_t_3 = __pyx_v_lyapunov_method; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->lyapunov_method); __Pyx_DECREF(__pyx_v_self->lyapunov_method); __pyx_v_self->lyapunov_method = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+0089: self.rtol_det = rtol_det
__pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_rtol_det); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 89, __pyx_L1_error) __pyx_v_self->rtol_det = __pyx_t_1;
+0090: self.rtol_lyapunov = rtol_lyapunov
__pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_rtol_lyapunov); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error) __pyx_v_self->rtol_lyapunov = __pyx_t_1;
+0091: self.max_steps_det = max_steps_det
__pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_max_steps_det); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error) __pyx_v_self->max_steps_det = __pyx_t_7;
+0092: self.max_steps_lyapunov = max_steps_lyapunov
__pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_max_steps_lyapunov); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error) __pyx_v_self->max_steps_lyapunov = __pyx_t_7;
0093:
+0094: self.dim = nClass*M
__pyx_t_3 = PyNumber_Multiply(__pyx_v_nClass, __pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_self->dim = __pyx_t_2;
+0095: self.nClass = nClass
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_nClass); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error) __pyx_v_self->nClass = __pyx_t_2;
+0096: self.vec_size = int(self.dim*(self.dim+1)/2)
__pyx_v_self->vec_size = ((__pyx_v_self->dim * (__pyx_v_self->dim + 1)) / 2);
+0097: self.CM = np.empty((M, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_M); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->CM)); __pyx_v_self->CM = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
+0098: self.dsigmadt = np.zeros((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->dsigmadt); __Pyx_DECREF(((PyObject *)__pyx_v_self->dsigmadt)); __pyx_v_self->dsigmadt = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+0099: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_M); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->J); __Pyx_DECREF(((PyObject *)__pyx_v_self->J)); __pyx_v_self->J = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0100: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_M); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->B); __Pyx_DECREF(((PyObject *)__pyx_v_self->B)); __pyx_v_self->B = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
+0101: self.J_mat = np.empty((self.dim, self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->J_mat)); __pyx_v_self->J_mat = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
+0102: self.B_vec = np.empty((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->B_vec)); __pyx_v_self->B_vec = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0103: self.U = np.empty((self.dim, self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->U); __Pyx_DECREF(((PyObject *)__pyx_v_self->U)); __pyx_v_self->U = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
0104:
0105: # preparing the indices
+0106: self.rows, self.cols = np.triu_indices(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 106, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 106, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 106, __pyx_L1_error) __pyx_L4_unpacking_done:; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 106, __pyx_L1_error) if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->rows); __Pyx_DECREF(((PyObject *)__pyx_v_self->rows)); __pyx_v_self->rows = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->cols); __Pyx_DECREF(((PyObject *)__pyx_v_self->cols)); __pyx_v_self->cols = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+0107: self.flat_indices = np.ravel_multi_index((self.rows, self.cols), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_self->rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->rows)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self->rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cols)); PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self->cols)); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10); __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_12 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_12 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_t_11}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_t_11}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_12, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_12, __pyx_t_11); __pyx_t_5 = 0; __pyx_t_11 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->flat_indices); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices)); __pyx_v_self->flat_indices = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0108: r, c = np.triu_indices(self.dim, k=1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_k, __pyx_int_1) < 0) __PYX_ERR(0, 108, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_11))) || (PyList_CheckExact(__pyx_t_11))) { PyObject* sequence = __pyx_t_11; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 108, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_8 = __pyx_t_9(__pyx_t_6); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_6), 2) < 0) __PYX_ERR(0, 108, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 108, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_r = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_c = __pyx_t_8; __pyx_t_8 = 0;
+0109: self.flat_indices1 = np.ravel_multi_index((r, c), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_r); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_c); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_12 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_12 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_8, __pyx_t_10}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_8, __pyx_t_10}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_12, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_12, __pyx_t_10); __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_11); __Pyx_GOTREF(__pyx_v_self->flat_indices1); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices1)); __pyx_v_self->flat_indices1 = ((PyArrayObject *)__pyx_t_11); __pyx_t_11 = 0;
+0110: self.flat_indices2 = np.ravel_multi_index((c, r), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_c); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_r); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8); __pyx_t_10 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_12 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_12 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_5}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_5}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_12, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_12, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_11); __Pyx_GOTREF(__pyx_v_self->flat_indices2); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices2)); __pyx_v_self->flat_indices2 = ((PyArrayObject *)__pyx_t_11); __pyx_t_11 = 0;
0111:
+0112: self._xm = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_xm); __Pyx_DECREF(((PyObject *)__pyx_v_self->_xm)); __pyx_v_self->_xm = ((PyArrayObject *)Py_None);
+0113: self._interp = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_interp); __Pyx_DECREF(__pyx_v_self->_interp); __pyx_v_self->_interp = ((PyObject*)Py_None);
0114:
+0115: self.param_mapping_enabled = False
__pyx_v_self->param_mapping_enabled = 0;
0116:
0117:
+0118: def infer_parameters(self, x, Tf, contactMatrix, prior_dict, **kwargs):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_2infer_parameters[] = "Infers the MAP estimates for epidemiological parameters\n\n Parameters\n ----------\n see `infer`\n\n Returns\n -------\n output: dict\n Contains the following keys for users:\n\n map_dict: dict\n A dictionary for MAPs. Keys are the names of the parameters and\n the corresponding values are its MAP estimates.\n -logp: float\n The value of -logp at MAP.\n\n Note\n ----\n This function just calls `infer` with a fixed contactMatrix function, will be deprecated.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_parameters (wrapper)", 0);
__pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_prior_dict,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 1, 4, 4, 1); __PYX_ERR(0, 118, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 1, 4, 4, 2); __PYX_ERR(0, 118, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 1, 4, 4, 3); __PYX_ERR(0, 118, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "infer_parameters") < 0)) __PYX_ERR(0, 118, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_contactMatrix = values[2];
__pyx_v_prior_dict = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_parameters", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2infer_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_prior_dict, __pyx_v_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2infer_parameters(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_kwargs) {
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_parameters", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0119: """Infers the MAP estimates for epidemiological parameters
0120:
0121: Parameters
0122: ----------
0123: see `infer`
0124:
0125: Returns
0126: -------
0127: output: dict
0128: Contains the following keys for users:
0129:
0130: map_dict: dict
0131: A dictionary for MAPs. Keys are the names of the parameters and
0132: the corresponding values are its MAP estimates.
0133: -logp: float
0134: The value of -logp at MAP.
0135:
0136: Note
0137: ----
0138: This function just calls `infer` with a fixed contactMatrix function, will be deprecated.
0139: """
0140:
0141:
+0142: output_dict = self.infer(x, Tf, prior_dict, contactMatrix=contactMatrix, generator=None,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_dict); __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 142, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 142, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_output_dict = __pyx_t_4; __pyx_t_4 = 0;
+0143: intervention_fun=None, **kwargs)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 142, __pyx_L1_error) __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v_kwargs) < 0) __PYX_ERR(0, 143, __pyx_L1_error)
0144:
0145: # match old output dictionary key names (the new implementation of infer uses the same keys as latent_infer)
0146:
+0147: output_dict['map_dict'] = output_dict['params_dict']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_map_dict, __pyx_t_4) < 0)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0148: output_dict['keys'] = output_dict['param_keys']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_param_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_keys, __pyx_t_4) < 0)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0149: output_dict['flat_guess_range'] = output_dict['param_guess_range']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_param_guess_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_flat_guess_range, __pyx_t_4) < 0)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0150: output_dict['scaled_guesses'] = output_dict['scaled_param_guesses']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_scaled_param_guesses); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_scaled_guesses, __pyx_t_4) < 0)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0151: output_dict['flat_map'] = output_dict['flat_params']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_flat_map, __pyx_t_4) < 0)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0152:
+0153: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
0154:
+0155: def nested_sampling_inference(self, x, Tf, contactMatrix, prior_dict, tangent=False, verbose=False,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5nested_sampling_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_4nested_sampling_inference[] = "\n Run nested sampling for model parameters without latent variables.\n\n Note\n ----\n This function has been replaced by `pyross.inference.infer_nested_sampling` and will be deleted\n in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5nested_sampling_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_maxiter = 0;
PyObject *__pyx_v_maxcall = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_n_effective = 0;
PyObject *__pyx_v_add_live = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_dynesty_args = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference (wrapper)", 0);
__pyx_v_dynesty_args = PyDict_New(); if (unlikely(!__pyx_v_dynesty_args)) return NULL;
__Pyx_GOTREF(__pyx_v_dynesty_args);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_prior_dict,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_nprocesses,&__pyx_n_s_queue_size,&__pyx_n_s_maxiter,&__pyx_n_s_maxcall,&__pyx_n_s_dlogz,&__pyx_n_s_n_effective,&__pyx_n_s_add_live,&__pyx_n_s_sampler,0};
PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)Py_False);
values[5] = ((PyObject *)Py_False);
values[6] = ((PyObject *)__pyx_int_0);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_dynesty_args);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4nested_sampling_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_maxiter, PyObject *__pyx_v_maxcall, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_n_effective, PyObject *__pyx_v_add_live, PyObject *__pyx_v_sampler, PyObject *__pyx_v_dynesty_args) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0156: nprocesses=0, queue_size=None, maxiter=None, maxcall=None, dlogz=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
+0157: n_effective=None, add_live=True, sampler=None, **dynesty_args):
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_True);
values[13] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 4, 14, 1); __PYX_ERR(0, 155, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 4, 14, 2); __PYX_ERR(0, 155, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 4, 14, 3); __PYX_ERR(0, 155, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxiter);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxcall);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_effective);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_add_live);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[13] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_dynesty_args, values, pos_args, "nested_sampling_inference") < 0)) __PYX_ERR(0, 155, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_contactMatrix = values[2];
__pyx_v_prior_dict = values[3];
__pyx_v_tangent = values[4];
__pyx_v_verbose = values[5];
__pyx_v_nprocesses = values[6];
__pyx_v_queue_size = values[7];
__pyx_v_maxiter = values[8];
__pyx_v_maxcall = values[9];
__pyx_v_dlogz = values[10];
__pyx_v_n_effective = values[11];
__pyx_v_add_live = values[12];
__pyx_v_sampler = values[13];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 4, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 155, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_dynesty_args); __pyx_v_dynesty_args = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4nested_sampling_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_prior_dict, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_nprocesses, __pyx_v_queue_size, __pyx_v_maxiter, __pyx_v_maxcall, __pyx_v_dlogz, __pyx_v_n_effective, __pyx_v_add_live, __pyx_v_sampler, __pyx_v_dynesty_args);
0158: """
0159: Run nested sampling for model parameters without latent variables.
0160:
0161: Note
0162: ----
0163: This function has been replaced by `pyross.inference.infer_nested_sampling` and will be deleted
0164: in a future version of pyross. See there for a documentation of the function parameters.
0165: """
+0166: return self.infer_nested_sampling(x, Tf, prior_dict, contactMatrix=contactMatrix, generator=None,
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_nested_sampling); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_dict); __pyx_t_4 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 166, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+0167: intervention_fun=None, tangent=tangent, verbose=verbose, nprocesses=nprocesses,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 166, __pyx_L1_error)
+0168: queue_size=queue_size, maxiter=maxiter, maxcall=maxcall, dlogz=dlogz,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_queue_size, __pyx_v_queue_size) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxiter, __pyx_v_maxiter) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxcall, __pyx_v_maxcall) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dlogz, __pyx_v_dlogz) < 0) __PYX_ERR(0, 166, __pyx_L1_error)
+0169: n_effective=n_effective, add_live=add_live, sampler=sampler, **dynesty_args)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_n_effective, __pyx_v_n_effective) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_add_live, __pyx_v_add_live) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_sampler, __pyx_v_sampler) < 0) __PYX_ERR(0, 166, __pyx_L1_error) __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 169, __pyx_L1_error)
0170:
+0171: def nested_sampling_inference_process_result(self, sampler, prior_dict):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7nested_sampling_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_6nested_sampling_inference_process_result[] = "\n Take the sampler generated by `nested_sampling_inference` and produce output dictionaries for further use\n in the pyross framework.\n\n Note\n ----\n This function has been replaced by `pyross.inference.infer_nested_sampling_process_result` and will be deleted\n in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7nested_sampling_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference_process_result (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_prior_dict,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference_process_result", 1, 2, 2, 1); __PYX_ERR(0, 171, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nested_sampling_inference_process_result") < 0)) __PYX_ERR(0, 171, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_sampler = values[0];
__pyx_v_prior_dict = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference_process_result", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 171, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_6nested_sampling_inference_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_prior_dict);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_6nested_sampling_inference_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_prior_dict) {
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_out_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_out_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0172: """
0173: Take the sampler generated by `nested_sampling_inference` and produce output dictionaries for further use
0174: in the pyross framework.
0175:
0176: Note
0177: ----
0178: This function has been replaced by `pyross.inference.infer_nested_sampling_process_result` and will be deleted
0179: in a future version of pyross. See there for a documentation of the function parameters.
0180: """
+0181: result, output_samples = self.infer_nested_sampling_process_result(sampler, prior_dict, contactMatrix=self.contactMatrix,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_nested_sampling_process_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sampler); __Pyx_GIVEREF(__pyx_v_sampler); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sampler); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_prior_dict); __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_contactMatrix, __pyx_v_self->contactMatrix) < 0) __PYX_ERR(0, 181, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 181, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_5(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_1), 2) < 0) __PYX_ERR(0, 181, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 181, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_result = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_output_samples = __pyx_t_2; __pyx_t_2 = 0;
+0182: generator=None, intervention_fun=None)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 181, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 181, __pyx_L1_error)
0183:
0184: # Match old dictionary key names for backward compatibility.
+0185: for out_dict in output_samples:
if (likely(PyList_CheckExact(__pyx_v_output_samples)) || PyTuple_CheckExact(__pyx_v_output_samples)) { __pyx_t_4 = __pyx_v_output_samples; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_output_samples); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 185, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 185, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 185, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_7(__pyx_t_4); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 185, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_out_dict, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0186: out_dict['map_dict'] = out_dict.pop('params_dict')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_params_dict); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_dict, __pyx_t_2) < 0)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0187: out_dict['keys'] = out_dict.pop('param_keys')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_param_keys); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_keys, __pyx_t_2) < 0)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0188: out_dict['flat_guess_range'] = out_dict.pop('param_guess_range')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_param_guess_range) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_param_guess_range); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_guess_range, __pyx_t_2) < 0)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0189: out_dict['scaled_guesses'] = out_dict.pop('scaled_param_guesses')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_scaled_param_guesses) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_scaled_param_guesses); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_scaled_guesses, __pyx_t_2) < 0)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0190: out_dict['flat_map'] = out_dict.pop('flat_params')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_flat_params) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_flat_params); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_map, __pyx_t_2) < 0)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0191:
+0192: return result, output_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_result); __Pyx_INCREF(__pyx_v_output_samples); __Pyx_GIVEREF(__pyx_v_output_samples); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_output_samples); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0193:
+0194: def mcmc_inference(self, x, Tf, contactMatrix, prior_dict, tangent=False, verbose=False, sampler=None, nwalkers=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9mcmc_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_8mcmc_inference[] = "\n Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.\n\n Note\n ----\n This function has been replaced by `pyross.inference.infer_mcmc` and will be deleted in a future version of pyross.\n See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9mcmc_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_nwalkers = 0;
PyObject *__pyx_v_walker_pos = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_inference (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_prior_dict,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_sampler,&__pyx_n_s_nwalkers,&__pyx_n_s_walker_pos,&__pyx_n_s_nsamples,&__pyx_n_s_nprocesses,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)Py_False);
values[5] = ((PyObject *)Py_False);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8mcmc_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_sampler, PyObject *__pyx_v_nwalkers, PyObject *__pyx_v_walker_pos, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_inference", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0195: walker_pos=None, nsamples=1000, nprocesses=0):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)__pyx_int_1000);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_inference", 0, 4, 11, 1); __PYX_ERR(0, 194, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_inference", 0, 4, 11, 2); __PYX_ERR(0, 194, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_inference", 0, 4, 11, 3); __PYX_ERR(0, 194, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nwalkers);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_walker_pos);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mcmc_inference") < 0)) __PYX_ERR(0, 194, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_contactMatrix = values[2];
__pyx_v_prior_dict = values[3];
__pyx_v_tangent = values[4];
__pyx_v_verbose = values[5];
__pyx_v_sampler = values[6];
__pyx_v_nwalkers = values[7];
__pyx_v_walker_pos = values[8];
__pyx_v_nsamples = values[9];
__pyx_v_nprocesses = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("mcmc_inference", 0, 4, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 194, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8mcmc_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_prior_dict, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_sampler, __pyx_v_nwalkers, __pyx_v_walker_pos, __pyx_v_nsamples, __pyx_v_nprocesses);
0196: """
0197: Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.
0198:
0199: Note
0200: ----
0201: This function has been replaced by `pyross.inference.infer_mcmc` and will be deleted in a future version of pyross.
0202: See there for a documentation of the function parameters.
0203: """
+0204: return self.infer_mcmc(x, Tf, prior_dict, contactMatrix=contactMatrix, generator=None, intervention_fun=None,
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_mcmc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_dict); __pyx_t_3 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 204, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+0205: tangent=tangent, verbose=verbose, sampler=sampler, nwalkers=nwalkers,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sampler, __pyx_v_sampler) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nwalkers, __pyx_v_nwalkers) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
+0206: walker_pos=walker_pos, nsamples=nsamples, nprocesses=nprocesses)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_walker_pos, __pyx_v_walker_pos) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nsamples, __pyx_v_nsamples) < 0) __PYX_ERR(0, 204, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
0207:
+0208: def mcmc_inference_process_result(self, sampler, prior_dict, flat=True, discard=0, thin=1):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_11mcmc_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_10mcmc_inference_process_result[] = "\n Take the sampler generated by `mcmc_inference` and produce output dictionaries for further use in the\n pyross framework.\n\n Note\n ----\n This function has been replaced by `pyross.inference.infer_mcmc_process_result` and will be deleted in a future version\n of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_11mcmc_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_flat = 0;
PyObject *__pyx_v_discard = 0;
PyObject *__pyx_v_thin = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_inference_process_result (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_prior_dict,&__pyx_n_s_flat,&__pyx_n_s_discard,&__pyx_n_s_thin,0};
PyObject* values[5] = {0,0,0,0,0};
values[2] = ((PyObject *)Py_True);
values[3] = ((PyObject *)__pyx_int_0);
values[4] = ((PyObject *)__pyx_int_1);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_inference_process_result", 0, 2, 5, 1); __PYX_ERR(0, 208, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_discard);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thin);
if (value) { values[4] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mcmc_inference_process_result") < 0)) __PYX_ERR(0, 208, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_prior_dict = values[1];
__pyx_v_flat = values[2];
__pyx_v_discard = values[3];
__pyx_v_thin = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("mcmc_inference_process_result", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 208, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10mcmc_inference_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_prior_dict, __pyx_v_flat, __pyx_v_discard, __pyx_v_thin);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10mcmc_inference_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_flat, PyObject *__pyx_v_discard, PyObject *__pyx_v_thin) {
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_flat_sample_list = NULL;
PyObject *__pyx_v_out_dict = NULL;
PyObject *__pyx_7genexpr__pyx_v_sublist = NULL;
PyObject *__pyx_7genexpr__pyx_v_item = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_inference_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_flat_sample_list);
__Pyx_XDECREF(__pyx_v_out_dict);
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_sublist);
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_item);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0209: """
0210: Take the sampler generated by `mcmc_inference` and produce output dictionaries for further use in the
0211: pyross framework.
0212:
0213: Note
0214: ----
0215: This function has been replaced by `pyross.inference.infer_mcmc_process_result` and will be deleted in a future version
0216: of pyross. See there for a documentation of the function parameters.
0217: """
+0218: output_samples = self.infer_mcmc_process_result(sampler, prior_dict, contactMatrix=self.contactMatrix, generator=None,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_mcmc_process_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sampler); __Pyx_GIVEREF(__pyx_v_sampler); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sampler); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_prior_dict); __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_contactMatrix, __pyx_v_self->contactMatrix) < 0) __PYX_ERR(0, 218, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 218, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_output_samples = __pyx_t_4; __pyx_t_4 = 0;
+0219: intervention_fun=None, flat=flat, discard=discard, thin=thin)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 218, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 218, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 218, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 218, __pyx_L1_error)
0220:
0221: # Match old dictionary key names for backward compatibility.
+0222: if flat:
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 222, __pyx_L1_error) if (__pyx_t_5) { /* … */ goto __pyx_L3; }
+0223: flat_sample_list = output_samples
__Pyx_INCREF(__pyx_v_output_samples);
__pyx_v_flat_sample_list = __pyx_v_output_samples;
0224: else:
+0225: flat_sample_list = [item for sublist in output_samples for item in sublist]
/*else*/ {
{ /* enter inner scope */
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_4);
if (likely(PyList_CheckExact(__pyx_v_output_samples)) || PyTuple_CheckExact(__pyx_v_output_samples)) {
__pyx_t_3 = __pyx_v_output_samples; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
} else {
__pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_output_samples); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 225, __pyx_L6_error)
}
for (;;) {
if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 225, __pyx_L6_error)
#else
__pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
} else {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 225, __pyx_L6_error)
#else
__pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
}
} else {
__pyx_t_2 = __pyx_t_7(__pyx_t_3);
if (unlikely(!__pyx_t_2)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 225, __pyx_L6_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_sublist, __pyx_t_2);
__pyx_t_2 = 0;
if (likely(PyList_CheckExact(__pyx_7genexpr__pyx_v_sublist)) || PyTuple_CheckExact(__pyx_7genexpr__pyx_v_sublist)) {
__pyx_t_2 = __pyx_7genexpr__pyx_v_sublist; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
__pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_7genexpr__pyx_v_sublist); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 225, __pyx_L6_error)
}
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_2))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 225, __pyx_L6_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 225, __pyx_L6_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
__pyx_t_1 = __pyx_t_9(__pyx_t_2);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 225, __pyx_L6_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_item, __pyx_t_1);
__pyx_t_1 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_7genexpr__pyx_v_item))) __PYX_ERR(0, 225, __pyx_L6_error)
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_item); __pyx_7genexpr__pyx_v_item = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_sublist); __pyx_7genexpr__pyx_v_sublist = 0;
goto __pyx_L11_exit_scope;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_item); __pyx_7genexpr__pyx_v_item = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_sublist); __pyx_7genexpr__pyx_v_sublist = 0;
goto __pyx_L1_error;
__pyx_L11_exit_scope:;
} /* exit inner scope */
__pyx_v_flat_sample_list = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_L3:;
+0226: for out_dict in flat_sample_list:
if (likely(PyList_CheckExact(__pyx_v_flat_sample_list)) || PyTuple_CheckExact(__pyx_v_flat_sample_list)) { __pyx_t_4 = __pyx_v_flat_sample_list; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_flat_sample_list); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 226, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 226, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 226, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_7(__pyx_t_4); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 226, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_out_dict, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0227: out_dict['map_dict'] = out_dict.pop('params_dict')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_params_dict); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_dict, __pyx_t_3) < 0)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0228: out_dict['keys'] = out_dict.pop('param_keys')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_param_keys); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_keys, __pyx_t_3) < 0)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0229: out_dict['flat_guess_range'] = out_dict.pop('param_guess_range')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_param_guess_range) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_param_guess_range); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_guess_range, __pyx_t_3) < 0)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0230: out_dict['scaled_guesses'] = out_dict.pop('scaled_param_guesses')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_scaled_param_guesses) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_scaled_param_guesses); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_scaled_guesses, __pyx_t_3) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0231: out_dict['flat_map'] = out_dict.pop('flat_params')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_flat_params) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_flat_params); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_map, __pyx_t_3) < 0)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
0232:
+0233: return output_samples
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_samples); __pyx_r = __pyx_v_output_samples; goto __pyx_L0;
0234:
0235:
+0236: def infer_control(self, x, Tf, generator, prior_dict, **kwargs):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_12infer_control[] = "\n Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in\n lockdown.\n\n Parameters\n ----------\n see `infer`\n\n Returns\n -------\n output_dict: dict\n Dictionary of MAP estimates, containing the following keys for users:\n\n map_dict: dict\n Dictionary for MAP estimates of the control parameters.\n -logp: float\n Value of -logp at MAP.\n\n Note\n ----\n This function just calls `infer` with the specified generator, will be deprecated.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_control (wrapper)", 0);
__pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_generator,&__pyx_n_s_prior_dict,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 1, 4, 4, 1); __PYX_ERR(0, 236, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 1, 4, 4, 2); __PYX_ERR(0, 236, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 1, 4, 4, 3); __PYX_ERR(0, 236, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "infer_control") < 0)) __PYX_ERR(0, 236, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_generator = values[2];
__pyx_v_prior_dict = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_control", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 236, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_12infer_control(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_generator, __pyx_v_prior_dict, __pyx_v_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_12infer_control(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_generator, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_kwargs) {
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_control", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0237: """
0238: Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in
0239: lockdown.
0240:
0241: Parameters
0242: ----------
0243: see `infer`
0244:
0245: Returns
0246: -------
0247: output_dict: dict
0248: Dictionary of MAP estimates, containing the following keys for users:
0249:
0250: map_dict: dict
0251: Dictionary for MAP estimates of the control parameters.
0252: -logp: float
0253: Value of -logp at MAP.
0254:
0255: Note
0256: ----
0257: This function just calls `infer` with the specified generator, will be deprecated.
0258: """
0259:
+0260: output_dict = self.infer(x, Tf, prior_dict, contactMatrix=None, generator=generator,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_dict); __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, Py_None) < 0) __PYX_ERR(0, 260, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 260, __pyx_L1_error) __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_output_dict = __pyx_t_4; __pyx_t_4 = 0;
+0261: **kwargs)
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v_kwargs) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
0262:
0263: # match old output dictionary key names
+0264: del output_dict['params_dict']
if (unlikely(PyObject_DelItem(__pyx_v_output_dict, __pyx_n_u_params_dict) < 0)) __PYX_ERR(0, 264, __pyx_L1_error)
+0265: output_dict['map_dict'] = output_dict['control_params_dict']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_map_dict, __pyx_t_4) < 0)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0266: output_dict['keys'] = output_dict['param_keys']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_param_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_keys, __pyx_t_4) < 0)) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0267: output_dict['flat_guess_range'] = output_dict['param_guess_range']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_param_guess_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_flat_guess_range, __pyx_t_4) < 0)) __PYX_ERR(0, 267, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0268: output_dict['scaled_guesses'] = output_dict['scaled_param_guesses']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_scaled_param_guesses); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_scaled_guesses, __pyx_t_4) < 0)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0269:
+0270: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
0271:
+0272: def _loglikelihood(self, params, contactMatrix=None, generator=None, intervention_fun=None, keys=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15_loglikelihood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_14_loglikelihood[] = "Compute the log-likelihood of the model.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15_loglikelihood(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_flat_guess_range = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_inter_steps = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_loglikelihood (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_keys,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_tangent,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_flat_guess_range,&__pyx_n_s_scaled_guesses,&__pyx_n_s_bounds,&__pyx_n_s_inter_steps,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_14_loglikelihood(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_keys, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_tangent, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_flat_guess_range, PyObject *__pyx_v_scaled_guesses, PyObject *__pyx_v_bounds, PyObject *__pyx_v_inter_steps, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_kwargs = NULL;
double __pyx_v_minus_logl;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_loglikelihood", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._loglikelihood", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0273: x=None, Tf=None, tangent=None,is_scale_parameter=None, flat_guess_range=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
+0274: scaled_guesses=None, bounds=None, inter_steps=0, **catchall_kwargs):
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "_loglikelihood") < 0)) __PYX_ERR(0, 272, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_contactMatrix = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_keys = values[4];
__pyx_v_x = values[5];
__pyx_v_Tf = values[6];
__pyx_v_tangent = values[7];
__pyx_v_is_scale_parameter = values[8];
__pyx_v_flat_guess_range = values[9];
__pyx_v_scaled_guesses = values[10];
__pyx_v_bounds = values[11];
__pyx_v_inter_steps = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_loglikelihood", 0, 1, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 272, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._loglikelihood", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_14_loglikelihood(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_keys, __pyx_v_x, __pyx_v_Tf, __pyx_v_tangent, __pyx_v_is_scale_parameter, __pyx_v_flat_guess_range, __pyx_v_scaled_guesses, __pyx_v_bounds, __pyx_v_inter_steps, __pyx_v_catchall_kwargs);
0275: """Compute the log-likelihood of the model."""
+0276: if bounds is not None:
__pyx_t_1 = (__pyx_v_bounds != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
0277: # Check that params is within bounds. If not, return -np.inf.
+0278: if np.any(bounds[:,0] > params) or np.any(bounds[:,1] < params):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_any); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_slice_ = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice_)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice_); __Pyx_GIVEREF(__pyx_slice_); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_params, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_any); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_tuple__2 = PyTuple_Pack(2, __pyx_slice_, __pyx_int_0); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_params, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ } __pyx_tuple__3 = PyTuple_Pack(2, __pyx_slice_, __pyx_int_1); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3);
+0279: return -np.Inf
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Inf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0280:
0281: # Restore parameters from flattened parameters
+0282: orig_params = pyross.utils.unflatten_parameters(params, flat_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0283: is_scale_parameter, scaled_guesses)
__pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_params); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_7, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_7, __pyx_v_scaled_guesses); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_orig_params = __pyx_t_3; __pyx_t_3 = 0;
+0284: parameters, kwargs = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_orig_params); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 284, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 284, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 2) < 0) __PYX_ERR(0, 284, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 284, __pyx_L1_error) __pyx_L8_unpacking_done:; } __pyx_v_parameters = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_kwargs = __pyx_t_6; __pyx_t_6 = 0;
0285:
+0286: self.set_params(parameters)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0287:
+0288: if generator is not None:
__pyx_t_2 = (__pyx_v_generator != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L9;
}
+0289: if intervention_fun is None:
__pyx_t_1 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L10;
}
+0290: self.contactMatrix = generator.constant_contactMatrix(**kwargs)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 290, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_kwargs))) { __pyx_t_6 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kwargs, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_5; __pyx_t_5 = 0;
0291: else:
+0292: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **kwargs)
/*else*/ {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 292, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_kwargs))) {
__pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
} else {
__pyx_t_4 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kwargs, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L10:;
0293: else:
+0294: if kwargs != {}:
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyObject_RichCompare(__pyx_v_kwargs, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 294, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(__pyx_t_2)) {
/* … */
}
}
__pyx_L9:;
+0295: raise Exception('Key error or unspecified generator')
__pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 295, __pyx_L1_error) /* … */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Key_error_or_unspecified_generat); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
0296:
+0297: if tangent:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 297, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L12; }
+0298: minus_logl = self._obtain_logp_for_traj_tangent(x, Tf)
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 298, __pyx_L1_error) __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 298, __pyx_L1_error) __pyx_v_minus_logl = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_traj_tangent(__pyx_v_self, __pyx_t_9, __pyx_t_10); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
0299: else:
+0300: minus_logl = self._obtain_logp_for_traj(x, Tf, inter_steps)
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 300, __pyx_L1_error)
__pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 300, __pyx_L1_error)
__pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 300, __pyx_L1_error)
__pyx_t_13.__pyx_n = 1;
__pyx_t_13.inter_steps = __pyx_t_11;
__pyx_t_12 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_traj(__pyx_v_self, __pyx_t_9, __pyx_t_10, &__pyx_t_13);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
__pyx_v_minus_logl = __pyx_t_12;
}
__pyx_L12:;
0301:
+0302: return -minus_logl
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyFloat_FromDouble((-__pyx_v_minus_logl)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0303:
+0304: def _logposterior(self, params, prior=None, **logl_kwargs):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_17_logposterior(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_16_logposterior[] = "Compute the log-posterior (up to a constant) of the model.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_17_logposterior(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_prior = 0;
PyObject *__pyx_v_logl_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_logposterior (wrapper)", 0);
__pyx_v_logl_kwargs = PyDict_New(); if (unlikely(!__pyx_v_logl_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_logl_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_prior,0};
PyObject* values[2] = {0,0};
values[1] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior);
if (value) { values[1] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_logl_kwargs, values, pos_args, "_logposterior") < 0)) __PYX_ERR(0, 304, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_prior = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_logposterior", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 304, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_logl_kwargs); __pyx_v_logl_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._logposterior", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_16_logposterior(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_prior, __pyx_v_logl_kwargs);
/* function exit code */
__Pyx_XDECREF(__pyx_v_logl_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_16_logposterior(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, PyObject *__pyx_v_prior, PyObject *__pyx_v_logl_kwargs) {
PyObject *__pyx_v_logl = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_logposterior", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type._logposterior", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_logl);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0305: """Compute the log-posterior (up to a constant) of the model."""
+0306: logl = self._loglikelihood(params, **logl_kwargs)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_params); __pyx_t_3 = PyDict_Copy(__pyx_v_logl_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_logl = __pyx_t_4; __pyx_t_4 = 0;
+0307: return logl + np.sum(prior.logpdf(params))
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v_params) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_params); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_v_logl, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
0308:
+0309: def _infer_to_minimize(self, params, grad=0, **logp_kwargs):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_19_infer_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_18_infer_to_minimize[] = "Objective function for minimization call in infer.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_19_infer_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_logp_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_to_minimize (wrapper)", 0);
__pyx_v_logp_kwargs = PyDict_New(); if (unlikely(!__pyx_v_logp_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_logp_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,0};
PyObject* values[2] = {0,0};
values[1] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_logp_kwargs, values, pos_args, "_infer_to_minimize") < 0)) __PYX_ERR(0, 309, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_infer_to_minimize", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 309, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_logp_kwargs); __pyx_v_logp_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_18_infer_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_logp_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_XDECREF(__pyx_v_logp_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_18_infer_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_logp_kwargs) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0310: """Objective function for minimization call in infer."""
+0311: return -self._logposterior(params, **logp_kwargs)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_params); __pyx_t_3 = PyDict_Copy(__pyx_v_logp_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0312:
+0313: def infer(self, x, Tf, prior_dict, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21infer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_20infer[] = "\n Compute the maximum a-posteriori (MAP) estimate for all desired parameters, including control parameters, for an SIR type model\n with fully observed classes. If `generator` is specified, the lockdown is modelled by scaling the contact matrices for contact at work,\n school, and other (but not home). This function infers the scaling parameters (can be age dependent) assuming that full data\n on all classes is available (with latent variables, use `latent_infer`).\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n prior_dict: dict\n A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space infere""nce. Default is false.\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: double\n Relative tolerance of logp\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n global_atol: float\n The absolute tolerance for global optimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_random_seed: int (between 0 and 2**32-1)\n Random seed for the optimisation algorithms. By default it is generated from numpy.random.randint.\n\n Returns\n -------\n output_dict: dict\n Dictionary of MAP estimates, containing the following keys for users:\n\n params_dict: dict\n Dictionary for MAP estimates of the model parameters.\n control_params_dict: dict\n Dictionary for MAP estimates of the control parameters (if requested).\n -logp: float\n Value of -logp at MAP.\n Note\n ----\n This function combines the functionality of `infer_parameters` and `infer_control`,\n which will be deprecated.\n To infer model parameters only, specify a fixed `contactMatrix` function.\n To infer control parameters only, specify a `generator` and do not specify priors for model parameters.\n\n Examples\n --------\n An example of prior_dict to set priors for alpha and beta, where alpha\n is age dependent and we want to i""nfer its scale parameters rather than\n each component individually. The prior distribution is assumed to be\n log-normal with the specified mean and standard deviation.\n\n >>> prior_dict = {\n 'alpha':{\n 'mean': [0.5, 0.2],\n 'infer_scale': True,\n 'scale_factor_std': 1,\n 'scale_factor_bounds': [0.1, 10],\n 'prior_fun': 'truncnorm'\n },\n 'beta':{\n 'mean': 0.02,\n 'std': 0.1,\n 'bounds': [1e-4, 1],\n 'prior_fun': 'lognorm'\n }\n }\n\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21infer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_ftol = 0;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_random_seed = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_prior_dict,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_random_seed,0};
PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_20infer(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_random_seed) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_cma_stds = NULL;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_cma_stds);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0314: generator=None, intervention_fun=None, tangent=False,
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
+0315: verbose=False, ftol=1e-6,
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)__pyx_float_1eneg_6);
values[9] = ((PyObject *)__pyx_int_100);
values[10] = ((PyObject *)__pyx_int_100);
values[11] = ((PyObject *)__pyx_float_1_);
0316: global_max_iter=100, local_max_iter=100, global_atol=1.,
+0317: enable_global=True, enable_local=True,
values[12] = ((PyObject *)Py_True);
values[13] = ((PyObject *)Py_True);
values[14] = ((PyObject *)__pyx_int_0);
values[15] = ((PyObject *)__pyx_int_16);
+0318: cma_processes=0, cma_population=16, cma_random_seed=None):
values[16] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer", 0, 3, 17, 1); __PYX_ERR(0, 313, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer", 0, 3, 17, 2); __PYX_ERR(0, 313, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_random_seed);
if (value) { values[16] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "infer") < 0)) __PYX_ERR(0, 313, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_prior_dict = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_verbose = values[7];
__pyx_v_ftol = values[8];
__pyx_v_global_max_iter = values[9];
__pyx_v_local_max_iter = values[10];
__pyx_v_global_atol = values[11];
__pyx_v_enable_global = values[12];
__pyx_v_enable_local = values[13];
__pyx_v_cma_processes = values[14];
__pyx_v_cma_population = values[15];
__pyx_v_cma_random_seed = values[16];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer", 0, 3, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 313, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_20infer(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_prior_dict, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_random_seed);
0319: """
0320: Compute the maximum a-posteriori (MAP) estimate for all desired parameters, including control parameters, for an SIR type model
0321: with fully observed classes. If `generator` is specified, the lockdown is modelled by scaling the contact matrices for contact at work,
0322: school, and other (but not home). This function infers the scaling parameters (can be age dependent) assuming that full data
0323: on all classes is available (with latent variables, use `latent_infer`).
0324:
0325: Parameters
0326: ----------
0327: x: 2d numpy.array
0328: Observed trajectory (number of data points x (age groups * model classes))
0329: Tf: float
0330: Total time of the trajectory
0331: prior_dict: dict
0332: A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.
0333: contactMatrix: callable, optional
0334: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
0335: Either a contactMatrix or a generator must be specified.
0336: generator: pyross.contactMatrix, optional
0337: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
0338: parameters.
0339: Either a contactMatrix or a generator must be specified.
0340: intervention_fun: callable, optional
0341: The calling signature is `intervention_func(t, **kwargs)`,
0342: where t is time and kwargs are other keyword arguments for the function.
0343: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
0344: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
0345: If not set, assume intervention that's constant in time.
0346: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
0347: tangent: bool, optional
0348: Set to True to use tangent space inference. Default is false.
0349: verbose: bool, optional
0350: Set to True to see intermediate outputs from the optimizer.
0351: ftol: double
0352: Relative tolerance of logp
0353: global_max_iter: int, optional
0354: Number of global optimisations performed.
0355: local_max_iter: int, optional
0356: Number of local optimisation performed.
0357: global_atol: float
0358: The absolute tolerance for global optimisation.
0359: enable_global: bool, optional
0360: Set to True to enable global optimisation.
0361: enable_local: bool, optional
0362: Set to True to enable local optimisation.
0363: cma_processes: int, optional
0364: Number of parallel processes used for global optimisation.
0365: cma_population: int, optional
0366: The number of samples used in each step of the CMA algorithm.
0367: cma_random_seed: int (between 0 and 2**32-1)
0368: Random seed for the optimisation algorithms. By default it is generated from numpy.random.randint.
0369:
0370: Returns
0371: -------
0372: output_dict: dict
0373: Dictionary of MAP estimates, containing the following keys for users:
0374:
0375: params_dict: dict
0376: Dictionary for MAP estimates of the model parameters.
0377: control_params_dict: dict
0378: Dictionary for MAP estimates of the control parameters (if requested).
0379: -logp: float
0380: Value of -logp at MAP.
0381: Note
0382: ----
0383: This function combines the functionality of `infer_parameters` and `infer_control`,
0384: which will be deprecated.
0385: To infer model parameters only, specify a fixed `contactMatrix` function.
0386: To infer control parameters only, specify a `generator` and do not specify priors for model parameters.
0387:
0388: Examples
0389: --------
0390: An example of prior_dict to set priors for alpha and beta, where alpha
0391: is age dependent and we want to infer its scale parameters rather than
0392: each component individually. The prior distribution is assumed to be
0393: log-normal with the specified mean and standard deviation.
0394:
0395: >>> prior_dict = {
0396: 'alpha':{
0397: 'mean': [0.5, 0.2],
0398: 'infer_scale': True,
0399: 'scale_factor_std': 1,
0400: 'scale_factor_bounds': [0.1, 10],
0401: 'prior_fun': 'truncnorm'
0402: },
0403: 'beta':{
0404: 'mean': 0.02,
0405: 'std': 0.1,
0406: 'bounds': [1e-4, 1],
0407: 'prior_fun': 'lognorm'
0408: }
0409: }
0410:
0411: """
0412:
0413:
0414: # Sanity checks of the inputs
+0415: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0416:
0417: # Read in parameter priors
+0418: prior_names, keys, guess, stds, _, _, bounds, \
__pyx_v_prior_names = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_v_keys = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v__ = __pyx_t_7;
__pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_8);
__pyx_t_8 = 0;
__pyx_v_bounds = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v_flat_guess_range = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_is_scale_parameter = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_scaled_guesses = __pyx_t_12;
__pyx_t_12 = 0;
0419: flat_guess_range, is_scale_parameter, scaled_guesses \
+0420: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_check_length, __pyx_t_3) < 0) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 418, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_7 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_9 = PyList_GET_ITEM(sequence, 6); __pyx_t_10 = PyList_GET_ITEM(sequence, 7); __pyx_t_11 = PyList_GET_ITEM(sequence, 8); __pyx_t_12 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 418, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 10) < 0) __PYX_ERR(0, 418, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 418, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0421: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Prior); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_prior = __pyx_t_3; __pyx_t_3 = 0;
+0422: cma_stds = np.minimum(stds, (bounds[:, 1] - bounds[:, 0])/3)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_minimum); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = PyNumber_Subtract(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_9, __pyx_int_3, 3, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_stds, __pyx_t_11}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_stds, __pyx_t_11}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_12 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_4, __pyx_v_stds); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_4, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_cma_stds = __pyx_t_3; __pyx_t_3 = 0;
+0423: minimize_args = {'keys':keys, 'x':x, 'Tf':Tf,
__pyx_t_3 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 423, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_x, __pyx_v_x) < 0) __PYX_ERR(0, 423, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0424: 'flat_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0425: 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0426: 'scaled_guesses': scaled_guesses,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0427: 'generator':generator, 'prior':prior,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 423, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+0428: 'intervention_fun': intervention_fun, 'tangent': tangent}
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 423, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 423, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+0429: res = minimization(self._infer_to_minimize, guess, bounds, ftol=ftol, global_max_iter=global_max_iter,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_minimization); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_to_minimize); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_guess); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_bounds); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_ftol, __pyx_v_ftol) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 429, __pyx_L1_error) /* … */ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_res = __pyx_t_11; __pyx_t_11 = 0;
+0430: local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 429, __pyx_L1_error)
+0431: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 429, __pyx_L1_error)
+0432: cma_population=cma_population, cma_stds=cma_stds, verbose=verbose, args_dict=minimize_args, cma_random_seed=cma_random_seed)
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_cma_stds, __pyx_v_cma_stds) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 429, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_cma_random_seed, __pyx_v_cma_random_seed) < 0) __PYX_ERR(0, 429, __pyx_L1_error)
0433:
+0434: orig_params = pyross.utils.unflatten_parameters(res[0], flat_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pyross); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_utils); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12);
+0435: is_scale_parameter, scaled_guesses)
__pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_12, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_12, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else #endif { __pyx_t_9 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_4, __pyx_v_scaled_guesses); __pyx_t_12 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_9, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_orig_params = __pyx_t_11; __pyx_t_11 = 0;
0436:
+0437: map_params_dict, map_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_orig_params); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 437, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) { PyObject* sequence = __pyx_t_12; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 437, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_10 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_11), 2) < 0) __PYX_ERR(0, 437, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 437, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_map_control_params_dict = __pyx_t_10; __pyx_t_10 = 0;
+0438: self.set_params(map_params_dict)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_12 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
0439:
+0440: if generator is not None:
__pyx_t_15 = (__pyx_v_generator != Py_None);
__pyx_t_16 = (__pyx_t_15 != 0);
if (__pyx_t_16) {
/* … */
}
+0441: if intervention_fun is None:
__pyx_t_16 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_15 = (__pyx_t_16 != 0);
if (__pyx_t_15) {
/* … */
goto __pyx_L8;
}
+0442: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 442, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_10 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } else { __pyx_t_10 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GIVEREF(__pyx_t_9); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_9; __pyx_t_9 = 0;
0443: else:
+0444: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 444, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_12 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
} else {
__pyx_t_12 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
}
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 444, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_GIVEREF(__pyx_t_11);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_11;
__pyx_t_11 = 0;
}
__pyx_L8:;
0445:
+0446: l_post = -res[1]
__pyx_t_11 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = PyNumber_Negative(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_l_post = __pyx_t_12; __pyx_t_12 = 0;
+0447: l_prior = np.sum(prior.logpdf(res[0]))
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_sum); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_11 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_12 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_l_prior = __pyx_t_12; __pyx_t_12 = 0;
+0448: l_like = l_post - l_prior
__pyx_t_12 = PyNumber_Subtract(__pyx_v_l_post, __pyx_v_l_prior); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_l_like = __pyx_t_12; __pyx_t_12 = 0;
0449: output_dict = {
+0450: 'params_dict': map_params_dict, 'flat_params': res[0], 'param_keys': keys,
__pyx_t_12 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_params_dict, __pyx_v_map_params_dict) < 0) __PYX_ERR(0, 450, __pyx_L1_error) __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_flat_params, __pyx_t_10) < 0) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+0451: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 450, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 450, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+0452: 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+0453: 'param_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_param_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+0454: 'scaled_param_guesses':scaled_guesses,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 450, __pyx_L1_error)
+0455: 'prior': prior
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 450, __pyx_L1_error) __pyx_v_output_dict = ((PyObject*)__pyx_t_12); __pyx_t_12 = 0;
0456: }
+0457: if map_control_params_dict != {}:
__pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = PyObject_RichCompare(__pyx_v_map_control_params_dict, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_15) { /* … */ }
+0458: output_dict['control_params_dict'] = map_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_map_control_params_dict) < 0)) __PYX_ERR(0, 458, __pyx_L1_error)
0459:
+0460: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
0461:
+0462: def _nested_sampling_prior_transform(self, x, prior=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_23_nested_sampling_prior_transform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_23_nested_sampling_prior_transform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_prior = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_prior_transform (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_prior,0};
PyObject* values[2] = {0,0};
values[1] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior);
if (value) { values[1] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_nested_sampling_prior_transform") < 0)) __PYX_ERR(0, 462, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_prior = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_nested_sampling_prior_transform", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 462, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_prior_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_22_nested_sampling_prior_transform(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_prior);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_22_nested_sampling_prior_transform(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_prior) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_prior_transform", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_prior_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0463: return prior.ppf(x)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_ppf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0464:
+0465: def infer_nested_sampling(self, x, Tf, prior_dict, contactMatrix=None, generator=None, intervention_fun=None, tangent=False,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_25infer_nested_sampling(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_24infer_nested_sampling[] = "\n Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model\n using nested sampling as implemented in the `dynesty` Python package. This function assumes that full data on\n all classes is available.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n prior_dict: dict\n A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is false.\n verbose: bool, optional\n Set to True to see intermediate outputs from the nested sampling procedure.\n nprocesses: int, optional\n The number of processes u""sed for parallel evaluation of the likelihood.\n queue_size: int, optional\n Size of internal queue of likelihood values, default is nprocesses if multiprocessing is used.\n maxiter: int, optional\n The maximum number of iterations. Default is no limit.\n maxcall:int, optional\n The maximum number of calls to the likelihood function. Default no limit.\n dlogz: float, optional\n The iteration terminates if the estimated contribution of the remaining prior volume to the total evidence\n falls below this threshold. Default value is `1e-3 * (nlive - 1) + 0.01` if `add_live==True`, 0.01 otherwise.\n n_effective: float, optional\n The iteration terminates if the number of effective posterior samples reaches this values. Default is no limit.\n add_live: bool, optional\n Determines whether to add the remaining set of live points to the set of samples. Default is True.\n sampler: dynesty.NestedSampler, optional\n Continue running an instance of a nested sampler until the termination criteria are met.\n **dynesty_args:\n Arguments passed through to the construction of the dynesty.NestedSampler constructor. Relevant entries\n are (this is not comprehensive, for details see the documentation of dynesty):\n\n nlive: int, optional\n The number of live points. Default is 500.\n bound: {'none', 'single', 'multi', 'balls', 'cubes'}, optional\n Method used to approximately bound the prior using the current set of live points. Default is 'multi'.\n sample: {'auto', 'unif', 'rwalk', 'rstagger', 'slice', 'rslice', 'hslice', callable}, optional\n Method used to sample uniformly within the likelihood constraint, conditioned on the provided bounds.\n\n Returns\n -------\n sampler: dynesty.NestedSampler\n The state of ""the sampler after termination of the nested sampling run.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_25infer_nested_sampling(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_maxiter = 0;
PyObject *__pyx_v_maxcall = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_n_effective = 0;
PyObject *__pyx_v_add_live = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_dynesty_args = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_nested_sampling (wrapper)", 0);
__pyx_v_dynesty_args = PyDict_New(); if (unlikely(!__pyx_v_dynesty_args)) return NULL;
__Pyx_GOTREF(__pyx_v_dynesty_args);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_prior_dict,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_nprocesses,&__pyx_n_s_queue_size,&__pyx_n_s_maxiter,&__pyx_n_s_maxcall,&__pyx_n_s_dlogz,&__pyx_n_s_n_effective,&__pyx_n_s_add_live,&__pyx_n_s_sampler,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_dynesty_args);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_24infer_nested_sampling(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_maxiter, PyObject *__pyx_v_maxcall, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_n_effective, PyObject *__pyx_v_add_live, PyObject *__pyx_v_sampler, PyObject *__pyx_v_dynesty_args) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
Py_ssize_t __pyx_v_ndim;
PyObject *__pyx_v_prior_transform_args = NULL;
PyObject *__pyx_v_loglike_args = NULL;
PyObject *__pyx_v_pool = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_nested_sampling", 0);
__Pyx_INCREF(__pyx_v_nprocesses);
__Pyx_INCREF(__pyx_v_queue_size);
__Pyx_INCREF(__pyx_v_sampler);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_nested_sampling", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_prior_transform_args);
__Pyx_XDECREF(__pyx_v_loglike_args);
__Pyx_XDECREF(__pyx_v_pool);
__Pyx_XDECREF(__pyx_v_nprocesses);
__Pyx_XDECREF(__pyx_v_queue_size);
__Pyx_XDECREF(__pyx_v_sampler);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0466: verbose=False, nprocesses=0, queue_size=None, maxiter=None, maxcall=None, dlogz=None,
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)__pyx_int_0);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
+0467: n_effective=None, add_live=True, sampler=None, **dynesty_args):
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_True);
values[15] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_nested_sampling", 0, 3, 16, 1); __PYX_ERR(0, 465, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_nested_sampling", 0, 3, 16, 2); __PYX_ERR(0, 465, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxiter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxcall);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_effective);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_add_live);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_dynesty_args, values, pos_args, "infer_nested_sampling") < 0)) __PYX_ERR(0, 465, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_prior_dict = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_verbose = values[7];
__pyx_v_nprocesses = values[8];
__pyx_v_queue_size = values[9];
__pyx_v_maxiter = values[10];
__pyx_v_maxcall = values[11];
__pyx_v_dlogz = values[12];
__pyx_v_n_effective = values[13];
__pyx_v_add_live = values[14];
__pyx_v_sampler = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_nested_sampling", 0, 3, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 465, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_dynesty_args); __pyx_v_dynesty_args = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_nested_sampling", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_24infer_nested_sampling(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_prior_dict, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_nprocesses, __pyx_v_queue_size, __pyx_v_maxiter, __pyx_v_maxcall, __pyx_v_dlogz, __pyx_v_n_effective, __pyx_v_add_live, __pyx_v_sampler, __pyx_v_dynesty_args);
0468: """
0469: Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model
0470: using nested sampling as implemented in the `dynesty` Python package. This function assumes that full data on
0471: all classes is available.
0472:
0473: Parameters
0474: ----------
0475: x: 2d numpy.array
0476: Observed trajectory (number of data points x (age groups * model classes))
0477: Tf: float
0478: Total time of the trajectory
0479: prior_dict: dict
0480: A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.
0481: contactMatrix: callable, optional
0482: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
0483: Either a contactMatrix or a generator must be specified.
0484: generator: pyross.contactMatrix, optional
0485: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
0486: parameters.
0487: Either a contactMatrix or a generator must be specified.
0488: intervention_fun: callable, optional
0489: The calling signature is `intervention_func(t, **kwargs)`,
0490: where t is time and kwargs are other keyword arguments for the function.
0491: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
0492: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
0493: If not set, assume intervention that's constant in time.
0494: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
0495: tangent: bool, optional
0496: Set to True to use tangent space inference. Default is false.
0497: verbose: bool, optional
0498: Set to True to see intermediate outputs from the nested sampling procedure.
0499: nprocesses: int, optional
0500: The number of processes used for parallel evaluation of the likelihood.
0501: queue_size: int, optional
0502: Size of internal queue of likelihood values, default is nprocesses if multiprocessing is used.
0503: maxiter: int, optional
0504: The maximum number of iterations. Default is no limit.
0505: maxcall:int, optional
0506: The maximum number of calls to the likelihood function. Default no limit.
0507: dlogz: float, optional
0508: The iteration terminates if the estimated contribution of the remaining prior volume to the total evidence
0509: falls below this threshold. Default value is `1e-3 * (nlive - 1) + 0.01` if `add_live==True`, 0.01 otherwise.
0510: n_effective: float, optional
0511: The iteration terminates if the number of effective posterior samples reaches this values. Default is no limit.
0512: add_live: bool, optional
0513: Determines whether to add the remaining set of live points to the set of samples. Default is True.
0514: sampler: dynesty.NestedSampler, optional
0515: Continue running an instance of a nested sampler until the termination criteria are met.
0516: **dynesty_args:
0517: Arguments passed through to the construction of the dynesty.NestedSampler constructor. Relevant entries
0518: are (this is not comprehensive, for details see the documentation of dynesty):
0519:
0520: nlive: int, optional
0521: The number of live points. Default is 500.
0522: bound: {'none', 'single', 'multi', 'balls', 'cubes'}, optional
0523: Method used to approximately bound the prior using the current set of live points. Default is 'multi'.
0524: sample: {'auto', 'unif', 'rwalk', 'rstagger', 'slice', 'rslice', 'hslice', callable}, optional
0525: Method used to sample uniformly within the likelihood constraint, conditioned on the provided bounds.
0526:
0527: Returns
0528: -------
0529: sampler: dynesty.NestedSampler
0530: The state of the sampler after termination of the nested sampling run.
0531: """
+0532: if dynesty is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+0533: raise Exception("Nested sampling needs optional dependency `dynesty` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 533, __pyx_L1_error) /* … */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Nested_sampling_needs_optional_d); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
0534:
+0535: if nprocesses == 0:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_nprocesses, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ }
+0536: if pathos_mp:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L5; }
0537: # Optional dependecy for multiprocessing (pathos) is installed.
+0538: nprocesses = pathos_mp.cpu_count()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_cpu_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_t_1); __pyx_t_1 = 0;
0539: else:
+0540: nprocesses = 1
/*else*/ {
__Pyx_INCREF(__pyx_int_1);
__Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_int_1);
}
__pyx_L5:;
0541:
+0542: if queue_size is None:
__pyx_t_3 = (__pyx_v_queue_size == Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+0543: queue_size = nprocesses
__Pyx_INCREF(__pyx_v_nprocesses); __Pyx_DECREF_SET(__pyx_v_queue_size, __pyx_v_nprocesses);
0544:
0545: # Sanity checks of the inputs
+0546: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0547:
0548: # Read in parameter priors
+0549: prior_names, keys, guess, stds, _, _, bounds, \
__pyx_v_prior_names = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_keys = __pyx_t_7;
__pyx_t_7 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_8;
__pyx_t_8 = 0;
__pyx_v__ = __pyx_t_9;
__pyx_t_9 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_10);
__pyx_t_10 = 0;
__pyx_v_bounds = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_flat_guess_range = __pyx_t_12;
__pyx_t_12 = 0;
__pyx_v_is_scale_parameter = __pyx_t_13;
__pyx_t_13 = 0;
__pyx_v_scaled_guesses = __pyx_t_14;
__pyx_t_14 = 0;
0550: flat_guess_range, is_scale_parameter, scaled_guesses \
+0551: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_check_length, __pyx_t_4) < 0) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 549, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_8 = PyList_GET_ITEM(sequence, 3); __pyx_t_9 = PyList_GET_ITEM(sequence, 4); __pyx_t_10 = PyList_GET_ITEM(sequence, 5); __pyx_t_11 = PyList_GET_ITEM(sequence, 6); __pyx_t_12 = PyList_GET_ITEM(sequence, 7); __pyx_t_13 = PyList_GET_ITEM(sequence, 8); __pyx_t_14 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_7,&__pyx_t_1,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_7,&__pyx_t_1,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14}; __pyx_t_15 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_16(__pyx_t_15); if (unlikely(!item)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 10) < 0) __PYX_ERR(0, 549, __pyx_L1_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 549, __pyx_L1_error) __pyx_L8_unpacking_done:; }
+0552: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_Prior); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_14)) { PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_12 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_13) { __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_6, __pyx_v_stds); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_prior = __pyx_t_4; __pyx_t_4 = 0;
0553:
+0554: ndim = len(guess)
__pyx_t_17 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(0, 554, __pyx_L1_error) __pyx_v_ndim = __pyx_t_17;
+0555: prior_transform_args = {'prior':prior}
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 555, __pyx_L1_error) __pyx_v_prior_transform_args = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+0556: loglike_args = {'keys':keys, 'x':x, 'Tf':Tf, 'flat_guess_range':flat_guess_range,
__pyx_t_4 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_x, __pyx_v_x) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
+0557: 'is_scale_parameter':is_scale_parameter, 'scaled_guesses': scaled_guesses,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
+0558: 'generator':generator, 'intervention_fun': intervention_fun, 'tangent': tangent}
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 556, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 556, __pyx_L1_error) __pyx_v_loglike_args = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
0559:
+0560: if sampler is None:
__pyx_t_2 = (__pyx_v_sampler == Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L9;
}
+0561: if nprocesses > 1:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L10; }
+0562: pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_4 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_14, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_pool = __pyx_t_4; __pyx_t_4 = 0;
+0563: sampler = dynesty.NestedSampler(self._loglikelihood, self._nested_sampling_prior_transform, ndim=ndim,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NestedSampler); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_14); __pyx_t_4 = 0; __pyx_t_14 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_ndim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ndim, __pyx_t_11) < 0) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_4); __pyx_t_4 = 0;
+0564: logl_kwargs=loglike_args, ptform_kwargs=prior_transform_args,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_logl_kwargs, __pyx_v_loglike_args) < 0) __PYX_ERR(0, 563, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ptform_kwargs, __pyx_v_prior_transform_args) < 0) __PYX_ERR(0, 563, __pyx_L1_error)
+0565: pool=pool, queue_size=queue_size, **dynesty_args)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_pool, __pyx_v_pool) < 0) __PYX_ERR(0, 563, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_queue_size, __pyx_v_queue_size) < 0) __PYX_ERR(0, 563, __pyx_L1_error) __pyx_t_14 = __pyx_t_4; __pyx_t_4 = 0; if (__Pyx_MergeKeywords(__pyx_t_14, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 565, __pyx_L1_error)
0566: else:
+0567: sampler = dynesty.NestedSampler(self._loglikelihood, self._nested_sampling_prior_transform, ndim=ndim,
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NestedSampler); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_13);
PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13);
__pyx_t_4 = 0;
__pyx_t_13 = 0;
__pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = PyInt_FromSsize_t(__pyx_v_ndim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ndim, __pyx_t_11) < 0) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_4);
__pyx_t_4 = 0;
}
__pyx_L10:;
+0568: logl_kwargs=loglike_args, ptform_kwargs=prior_transform_args,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_logl_kwargs, __pyx_v_loglike_args) < 0) __PYX_ERR(0, 567, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ptform_kwargs, __pyx_v_prior_transform_args) < 0) __PYX_ERR(0, 567, __pyx_L1_error) __pyx_t_13 = __pyx_t_4; __pyx_t_4 = 0;
+0569: **dynesty_args)
if (__Pyx_MergeKeywords(__pyx_t_13, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 569, __pyx_L1_error)
0570: else:
+0571: if nprocesses > 1:
/*else*/ {
__pyx_t_4 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 571, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_3) {
/* … */
goto __pyx_L11;
}
0572: # Restart the pool we closed at the end of the previous run.
+0573: sampler.pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_4 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_13, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, __pyx_t_4) < 0) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0574: sampler.M = sampler.pool.map
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_map); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_M, __pyx_t_12) < 0) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+0575: elif sampler.pool is not None:
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = (__pyx_t_12 != Py_None); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { /* … */ } __pyx_L11:; } __pyx_L9:;
+0576: sampler.pool = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, Py_None) < 0) __PYX_ERR(0, 576, __pyx_L1_error)
+0577: sampler.M = map
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_M, __pyx_builtin_map) < 0) __PYX_ERR(0, 577, __pyx_L1_error)
0578:
+0579: sampler.run_nested(maxiter=maxiter, maxcall=maxcall, dlogz=dlogz, n_effective=n_effective,
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_nested); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_4 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxiter, __pyx_v_maxiter) < 0) __PYX_ERR(0, 579, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxcall, __pyx_v_maxcall) < 0) __PYX_ERR(0, 579, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dlogz, __pyx_v_dlogz) < 0) __PYX_ERR(0, 579, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_n_effective, __pyx_v_n_effective) < 0) __PYX_ERR(0, 579, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0580: add_live=add_live, print_progress=verbose)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_add_live, __pyx_v_add_live) < 0) __PYX_ERR(0, 579, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_print_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 579, __pyx_L1_error)
0581:
+0582: if sampler.pool is not None:
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_2 = (__pyx_t_13 != Py_None); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* … */ }
+0583: sampler.pool.close()
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_close); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_13 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_12); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0584: sampler.pool.join()
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_join); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_13 = (__pyx_t_12) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0585: sampler.pool.clear()
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_clear); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_13 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_12); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0586:
+0587: return sampler
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_sampler); __pyx_r = __pyx_v_sampler; goto __pyx_L0;
0588:
+0589: def infer_nested_sampling_process_result(self, sampler, prior_dict,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_27infer_nested_sampling_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_26infer_nested_sampling_process_result[] = "\n Take the sampler generated by `pyross.inference.infer_nested_sampling` and produce output dictionaries for\n further use in the pyross framework. See `pyross.inference.infer_nested_sampling` for description of parameters.\n\n Parameters\n ----------\n sampler: dynesty.NestedSampler\n The output of `pyross.inference.infer_nested_sampling`.\n prior_dict: dict\n contactMatrix: callable, optional\n generator: pyross.contactMatrix, optional\n intervention_fun: callable, optional\n **catchall_kwargs: dict\n Catched further provided arguments and ignores them.\n\n Returns\n -------\n result: dynesty.Result\n The result of the nested sampling iteration. Relevant entries include:\n\n result.logz: list\n The progression of log-evidence estimates, use result.logz[-1] for the final estimate.\n output_samples: list\n The processed weighted posterior samples.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_27infer_nested_sampling_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_nested_sampling_process_result (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_prior_dict,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,0};
PyObject* values[5] = {0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_26infer_nested_sampling_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_output_samples = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_weight = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_nested_sampling_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_nested_sampling_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_weight);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0590: contactMatrix=None, generator=None,
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
+0591: intervention_fun=None, **catchall_kwargs):
values[4] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_nested_sampling_process_result", 0, 2, 5, 1); __PYX_ERR(0, 589, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[4] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "infer_nested_sampling_process_result") < 0)) __PYX_ERR(0, 589, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_prior_dict = values[1];
__pyx_v_contactMatrix = values[2];
__pyx_v_generator = values[3];
__pyx_v_intervention_fun = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_nested_sampling_process_result", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 589, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_nested_sampling_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_26infer_nested_sampling_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_prior_dict, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_catchall_kwargs);
0592: """
0593: Take the sampler generated by `pyross.inference.infer_nested_sampling` and produce output dictionaries for
0594: further use in the pyross framework. See `pyross.inference.infer_nested_sampling` for description of parameters.
0595:
0596: Parameters
0597: ----------
0598: sampler: dynesty.NestedSampler
0599: The output of `pyross.inference.infer_nested_sampling`.
0600: prior_dict: dict
0601: contactMatrix: callable, optional
0602: generator: pyross.contactMatrix, optional
0603: intervention_fun: callable, optional
0604: **catchall_kwargs: dict
0605: Catched further provided arguments and ignores them.
0606:
0607: Returns
0608: -------
0609: result: dynesty.Result
0610: The result of the nested sampling iteration. Relevant entries include:
0611:
0612: result.logz: list
0613: The progression of log-evidence estimates, use result.logz[-1] for the final estimate.
0614: output_samples: list
0615: The processed weighted posterior samples.
0616: """
+0617: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0618: prior_names, keys, guess, stds, _, _, bounds, flat_guess_range, is_scale_parameter, scaled_guesses \
__pyx_v_prior_names = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_v_keys = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v__ = __pyx_t_7;
__pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_8);
__pyx_t_8 = 0;
__pyx_v_bounds = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v_flat_guess_range = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_is_scale_parameter = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_scaled_guesses = __pyx_t_12;
__pyx_t_12 = 0;
+0619: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_check_length, __pyx_t_3) < 0) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 618, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_7 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_9 = PyList_GET_ITEM(sequence, 6); __pyx_t_10 = PyList_GET_ITEM(sequence, 7); __pyx_t_11 = PyList_GET_ITEM(sequence, 8); __pyx_t_12 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 10) < 0) __PYX_ERR(0, 618, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 618, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0620: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Prior); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_prior = __pyx_t_3; __pyx_t_3 = 0;
0621:
+0622: result = sampler.results
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_results); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = __pyx_t_3; __pyx_t_3 = 0;
+0623: output_samples = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_output_samples = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+0624: for i in range(len(result.samples)):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 624, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_i = __pyx_t_17;
+0625: sample = result.samples[i]
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_12); __pyx_t_12 = 0;
+0626: weight = np.exp(result.logwt[i] - result.logz[len(result.logz)-1])
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logwt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_18 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_19 = (__pyx_t_18 - 1); __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_19, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Subtract(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_12 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_weight, __pyx_t_12); __pyx_t_12 = 0;
+0627: l_like = result.logl[i]
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logl); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_12, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_l_like, __pyx_t_10); __pyx_t_10 = 0;
0628:
+0629: orig_params = pyross.utils.unflatten_parameters(sample, flat_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pyross); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0630: is_scale_parameter, scaled_guesses)
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_12, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_12)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses};
__pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 629, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_10);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses};
__pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 629, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_10);
} else
#endif
{
__pyx_t_9 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_sample);
__Pyx_GIVEREF(__pyx_v_sample);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_v_sample);
__Pyx_INCREF(__pyx_v_flat_guess_range);
__Pyx_GIVEREF(__pyx_v_flat_guess_range);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_v_flat_guess_range);
__Pyx_INCREF(__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_v_scaled_guesses);
__Pyx_GIVEREF(__pyx_v_scaled_guesses);
PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_4, __pyx_v_scaled_guesses);
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF_SET(__pyx_v_orig_params, __pyx_t_10);
__pyx_t_10 = 0;
0631:
+0632: map_params_dict, map_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_orig_params); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 632, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 632, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_12); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_10)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_14(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_12 = __pyx_t_14(__pyx_t_10); if (unlikely(!__pyx_t_12)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_10), 2) < 0) __PYX_ERR(0, 632, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 632, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_map_params_dict, __pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_map_control_params_dict, __pyx_t_12); __pyx_t_12 = 0;
+0633: self.set_params(map_params_dict)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_9, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
0634:
+0635: if generator is not None:
__pyx_t_20 = (__pyx_v_generator != Py_None);
__pyx_t_21 = (__pyx_t_20 != 0);
if (__pyx_t_21) {
/* … */
}
+0636: if intervention_fun is None:
__pyx_t_21 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_20 = (__pyx_t_21 != 0);
if (__pyx_t_20) {
/* … */
goto __pyx_L10;
}
+0637: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 637, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_12 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } else { __pyx_t_12 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GIVEREF(__pyx_t_9); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_9; __pyx_t_9 = 0;
0638: else:
+0639: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 639, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_3 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
} else {
__pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_12, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GIVEREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_10;
__pyx_t_10 = 0;
}
__pyx_L10:;
0640:
+0641: l_prior = np.sum(prior.logpdf(sample))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_3 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_10 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_3); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_l_prior, __pyx_t_10); __pyx_t_10 = 0;
+0642: l_post = l_like + l_prior
__pyx_t_10 = PyNumber_Add(__pyx_v_l_like, __pyx_v_l_prior); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_10); __pyx_t_10 = 0;
0643: output_dict = {
+0644: 'params_dict': map_params_dict, 'flat_params': sample, 'param_keys': keys,
__pyx_t_10 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_params_dict, __pyx_v_map_params_dict) < 0) __PYX_ERR(0, 644, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_flat_params, __pyx_v_sample) < 0) __PYX_ERR(0, 644, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+0645: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 644, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 644, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+0646: 'weight':weight, 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_weight, __pyx_v_weight) < 0) __PYX_ERR(0, 644, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+0647: 'param_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_param_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+0648: 'scaled_param_guesses':scaled_guesses,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+0649: 'prior': prior
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_output_dict, ((PyObject*)__pyx_t_10)); __pyx_t_10 = 0;
0650: }
+0651: if map_control_params_dict != {}:
__pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = PyObject_RichCompare(__pyx_v_map_control_params_dict, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (__pyx_t_20) { /* … */ }
+0652: output_dict['control_params_dict'] = map_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_map_control_params_dict) < 0)) __PYX_ERR(0, 652, __pyx_L1_error)
0653:
+0654: output_samples.append(output_dict)
__pyx_t_22 = __Pyx_PyList_Append(__pyx_v_output_samples, __pyx_v_output_dict); if (unlikely(__pyx_t_22 == ((int)-1))) __PYX_ERR(0, 654, __pyx_L1_error) }
0655:
+0656: return result, output_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_result); __Pyx_INCREF(__pyx_v_output_samples); __Pyx_GIVEREF(__pyx_v_output_samples); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_output_samples); __pyx_r = __pyx_t_12; __pyx_t_12 = 0; goto __pyx_L0;
0657:
+0658: def infer_mcmc(self, x, Tf, prior_dict, contactMatrix=None, generator=None, intervention_fun=None, tangent=False,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_29infer_mcmc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_28infer_mcmc[] = "\n Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n prior_dict: dict\n A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n verbose: bool, optional\n Set to True to see a progress bar for the sample generation. Default is False.\n sampler: emcee.EnsembleSampler, optional\n Set to instance of the sampler (as returned by this function) to continue running the MCMC chains.\n Default is None (i.e. run a new chain).\n nwalkers:int, optional\n "" The number of chains in the ensemble (should be at least 2*dim). Default is 2*dim.\n walker_pos: np.array, optional\n The initial position of the walkers. If not specified, it samples random positions from the prior.\n nsamples:int, optional\n The number of samples per walker. Default is 1000.\n nprocesses: int, optional\n The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is\n the number of cpu cores if `pathos` is available, otherwise 1.\n\n Returns\n -------\n sampler: emcee.EnsembleSampler\n This function returns the interal state of the sampler. To look at the chain of the internal flattened parameters,\n run `sampler.get_chain()`. Use this to judge whether the chain has sufficiently converged. Either rerun\n `mcmc_inference(..., sampler=sampler)` to continue the chain or `mcmc_inference_process_result(...)` to process\n the result.\n\n Examples\n --------\n For the structure of `prior_dict`, see the documentation of `infer`. To start sampling the posterior,\n run for example\n\n >>> sampler = estimator.infer_mcmc(x, Tf, prior_dict, contactMatrix=contactMatrix, verbose=True)\n\n To judge the convergence of this chain, we can look at the trace plot of all the chains (for a moderate number of\n dimensions `dim`)\n\n >>> fig, axes = plt.subplots(dim, sharex=True)\n >>> samples = sampler.get_chain()\n >>> for i in range(dim):\n ax = axes[i]\n ax.plot(samples[:, :, i], \"k\", alpha=0.3)\n ax.set_xlim(0, len(samples))\n >>> axes[-1].set_xlabel(\"step number\");\n\n For more detailed convergence metrics, see the documentation of `emcee`. To continue running this chain, we can\n call this function again with the sampler as argument\n\n >>> sampler ="" estimator.infer_mcmc(x, Tf, prior_dict, contactMatrix=contactMatrix, verbose=True, sampler=sampler)\n\n This procudes 1000 additional samples in each chain. To process the results, call `infer_mcmc_process_result`.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_29infer_mcmc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_nwalkers = 0;
PyObject *__pyx_v_walker_pos = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_mcmc (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_prior_dict,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_sampler,&__pyx_n_s_nwalkers,&__pyx_n_s_walker_pos,&__pyx_n_s_nsamples,&__pyx_n_s_nprocesses,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_28infer_mcmc(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_sampler, PyObject *__pyx_v_nwalkers, PyObject *__pyx_v_walker_pos, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_ndim = NULL;
PyObject *__pyx_v_logpost_args = NULL;
PyObject *__pyx_v_points = NULL;
PyObject *__pyx_v_p0 = NULL;
PyObject *__pyx_v_mcmc_pool = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_mcmc", 0);
__Pyx_INCREF(__pyx_v_sampler);
__Pyx_INCREF(__pyx_v_nwalkers);
__Pyx_INCREF(__pyx_v_nprocesses);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_mcmc", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_ndim);
__Pyx_XDECREF(__pyx_v_logpost_args);
__Pyx_XDECREF(__pyx_v_points);
__Pyx_XDECREF(__pyx_v_p0);
__Pyx_XDECREF(__pyx_v_mcmc_pool);
__Pyx_XDECREF(__pyx_v_sampler);
__Pyx_XDECREF(__pyx_v_nwalkers);
__Pyx_XDECREF(__pyx_v_nprocesses);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0659: verbose=False, sampler=None, nwalkers=None, walker_pos=None, nsamples=1000, nprocesses=0):
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)__pyx_int_1000);
values[12] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_mcmc", 0, 3, 13, 1); __PYX_ERR(0, 658, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_mcmc", 0, 3, 13, 2); __PYX_ERR(0, 658, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nwalkers);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_walker_pos);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "infer_mcmc") < 0)) __PYX_ERR(0, 658, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_prior_dict = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_verbose = values[7];
__pyx_v_sampler = values[8];
__pyx_v_nwalkers = values[9];
__pyx_v_walker_pos = values[10];
__pyx_v_nsamples = values[11];
__pyx_v_nprocesses = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_mcmc", 0, 3, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 658, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_mcmc", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_28infer_mcmc(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_prior_dict, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_sampler, __pyx_v_nwalkers, __pyx_v_walker_pos, __pyx_v_nsamples, __pyx_v_nprocesses);
0660: """
0661: Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.
0662:
0663: Parameters
0664: ----------
0665: x: 2d numpy.array
0666: Observed trajectory (number of data points x (age groups * model classes))
0667: Tf: float
0668: Total time of the trajectory
0669: prior_dict: dict
0670: A dictionary containing priors for parameters (can include both model and intervention parameters). See examples.
0671: contactMatrix: callable, optional
0672: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
0673: Either a contactMatrix or a generator must be specified.
0674: generator: pyross.contactMatrix, optional
0675: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
0676: parameters.
0677: Either a contactMatrix or a generator must be specified.
0678: intervention_fun: callable, optional
0679: The calling signature is `intervention_func(t, **kwargs)`,
0680: where t is time and kwargs are other keyword arguments for the function.
0681: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
0682: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
0683: If not set, assume intervention that's constant in time.
0684: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
0685: tangent: bool, optional
0686: Set to True to use tangent space inference. Default is False.
0687: verbose: bool, optional
0688: Set to True to see a progress bar for the sample generation. Default is False.
0689: sampler: emcee.EnsembleSampler, optional
0690: Set to instance of the sampler (as returned by this function) to continue running the MCMC chains.
0691: Default is None (i.e. run a new chain).
0692: nwalkers:int, optional
0693: The number of chains in the ensemble (should be at least 2*dim). Default is 2*dim.
0694: walker_pos: np.array, optional
0695: The initial position of the walkers. If not specified, it samples random positions from the prior.
0696: nsamples:int, optional
0697: The number of samples per walker. Default is 1000.
0698: nprocesses: int, optional
0699: The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is
0700: the number of cpu cores if `pathos` is available, otherwise 1.
0701:
0702: Returns
0703: -------
0704: sampler: emcee.EnsembleSampler
0705: This function returns the interal state of the sampler. To look at the chain of the internal flattened parameters,
0706: run `sampler.get_chain()`. Use this to judge whether the chain has sufficiently converged. Either rerun
0707: `mcmc_inference(..., sampler=sampler)` to continue the chain or `mcmc_inference_process_result(...)` to process
0708: the result.
0709:
0710: Examples
0711: --------
0712: For the structure of `prior_dict`, see the documentation of `infer`. To start sampling the posterior,
0713: run for example
0714:
0715: >>> sampler = estimator.infer_mcmc(x, Tf, prior_dict, contactMatrix=contactMatrix, verbose=True)
0716:
0717: To judge the convergence of this chain, we can look at the trace plot of all the chains (for a moderate number of
0718: dimensions `dim`)
0719:
0720: >>> fig, axes = plt.subplots(dim, sharex=True)
0721: >>> samples = sampler.get_chain()
0722: >>> for i in range(dim):
0723: ax = axes[i]
0724: ax.plot(samples[:, :, i], "k", alpha=0.3)
0725: ax.set_xlim(0, len(samples))
0726: >>> axes[-1].set_xlabel("step number");
0727:
0728: For more detailed convergence metrics, see the documentation of `emcee`. To continue running this chain, we can
0729: call this function again with the sampler as argument
0730:
0731: >>> sampler = estimator.infer_mcmc(x, Tf, prior_dict, contactMatrix=contactMatrix, verbose=True, sampler=sampler)
0732:
0733: This procudes 1000 additional samples in each chain. To process the results, call `infer_mcmc_process_result`.
0734: """
+0735: if emcee is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_emcee); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+0736: raise Exception("MCMC sampling needs optional dependency `emcee` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 736, __pyx_L1_error) /* … */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_MCMC_sampling_needs_optional_dep); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6);
0737:
+0738: if nprocesses == 0:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_nprocesses, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ }
+0739: if pathos_mp:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L5; }
0740: # Optional dependecy for multiprocessing (pathos) is installed.
+0741: nprocesses = pathos_mp.cpu_count()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_cpu_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_t_1); __pyx_t_1 = 0;
0742: else:
+0743: nprocesses = 1
/*else*/ {
__Pyx_INCREF(__pyx_int_1);
__Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_int_1);
}
__pyx_L5:;
0744:
+0745: if nprocesses > 1 and pathos_mp is None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 745, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = (__pyx_t_2 != 0); __pyx_t_3 = __pyx_t_6; __pyx_L7_bool_binop_done:; if (unlikely(__pyx_t_3)) { /* … */ }
+0746: raise Exception("The Python package `pathos` is needed for multiprocessing.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 746, __pyx_L1_error) /* … */ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_The_Python_package_pathos_is_nee); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7);
0747:
0748: # Sanity checks of the inputs
+0749: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0750:
0751: # Read in parameter priors
+0752: prior_names, keys, guess, stds, _, _, bounds, \
__pyx_v_prior_names = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_keys = __pyx_t_8;
__pyx_t_8 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v__ = __pyx_t_10;
__pyx_t_10 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_11);
__pyx_t_11 = 0;
__pyx_v_bounds = __pyx_t_12;
__pyx_t_12 = 0;
__pyx_v_flat_guess_range = __pyx_t_13;
__pyx_t_13 = 0;
__pyx_v_is_scale_parameter = __pyx_t_14;
__pyx_t_14 = 0;
__pyx_v_scaled_guesses = __pyx_t_15;
__pyx_t_15 = 0;
0753: flat_guess_range, is_scale_parameter, scaled_guesses \
+0754: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_check_length, __pyx_t_4) < 0) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 752, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_15 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_9 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_11 = PyList_GET_ITEM(sequence, 5); __pyx_t_12 = PyList_GET_ITEM(sequence, 6); __pyx_t_13 = PyList_GET_ITEM(sequence, 7); __pyx_t_14 = PyList_GET_ITEM(sequence, 8); __pyx_t_15 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_8,&__pyx_t_1,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_8,&__pyx_t_1,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15}; __pyx_t_16 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_17 = Py_TYPE(__pyx_t_16)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_17(__pyx_t_16); if (unlikely(!item)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_16), 10) < 0) __PYX_ERR(0, 752, __pyx_L1_error) __pyx_t_17 = NULL; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; goto __pyx_L10_unpacking_done; __pyx_L9_unpacking_failed:; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_17 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 752, __pyx_L1_error) __pyx_L10_unpacking_done:; }
+0755: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_Prior); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_14 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[5] = {__pyx_t_14, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[5] = {__pyx_t_14, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_13 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_7, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_7, __pyx_v_stds); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_v_prior = __pyx_t_4; __pyx_t_4 = 0;
0756:
+0757: ndim = len(guess)
__pyx_t_18 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 757, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_ndim = __pyx_t_4; __pyx_t_4 = 0;
+0758: if nwalkers is None:
__pyx_t_3 = (__pyx_v_nwalkers == Py_None);
__pyx_t_6 = (__pyx_t_3 != 0);
if (__pyx_t_6) {
/* … */
}
+0759: nwalkers = 2*ndim
__pyx_t_4 = PyNumber_Multiply(__pyx_int_2, __pyx_v_ndim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_nwalkers, __pyx_t_4); __pyx_t_4 = 0;
0760:
+0761: logpost_args = {'bounds':bounds, 'keys':keys, 'is_scale_parameter':is_scale_parameter,
__pyx_t_4 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_bounds, __pyx_v_bounds) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 761, __pyx_L1_error)
+0762: 'scaled_guesses':scaled_guesses, 'flat_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 761, __pyx_L1_error)
+0763: 'x':x, 'Tf':Tf, 'prior':prior, 'tangent':tangent, 'generator':generator,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_x, __pyx_v_x) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 761, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 761, __pyx_L1_error)
+0764: 'intervention_fun': intervention_fun}
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 761, __pyx_L1_error) __pyx_v_logpost_args = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+0765: if walker_pos is None:
__pyx_t_6 = (__pyx_v_walker_pos == Py_None);
__pyx_t_3 = (__pyx_t_6 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L12;
}
0766: # If not specified, sample initial positions of walkers from prior (within bounds).
+0767: points = np.random.rand(nwalkers, ndim)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_random); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_rand); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_nwalkers, __pyx_v_ndim}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_v_nwalkers, __pyx_v_ndim}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_14 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_13) { __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL; } __Pyx_INCREF(__pyx_v_nwalkers); __Pyx_GIVEREF(__pyx_v_nwalkers); PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_7, __pyx_v_nwalkers); __Pyx_INCREF(__pyx_v_ndim); __Pyx_GIVEREF(__pyx_v_ndim); PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_7, __pyx_v_ndim); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_v_points = __pyx_t_4; __pyx_t_4 = 0;
+0768: p0 = prior.ppf(points)
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_ppf); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } __pyx_t_4 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_14, __pyx_v_points) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_v_points); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_v_p0 = __pyx_t_4; __pyx_t_4 = 0;
0769: else:
+0770: p0 = walker_pos
/*else*/ {
__Pyx_INCREF(__pyx_v_walker_pos);
__pyx_v_p0 = __pyx_v_walker_pos;
}
__pyx_L12:;
0771:
+0772: if sampler is None:
__pyx_t_3 = (__pyx_v_sampler == Py_None);
__pyx_t_6 = (__pyx_t_3 != 0);
if (__pyx_t_6) {
/* … */
goto __pyx_L13;
}
0773: # Start a new MCMC chain.
+0774: if nprocesses > 1:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 774, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 774, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { /* … */ goto __pyx_L14; }
+0775: mcmc_pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_4 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_15, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_mcmc_pool = __pyx_t_4; __pyx_t_4 = 0;
+0776: sampler = emcee.EnsembleSampler(nwalkers, ndim, self._logposterior, kwargs=logpost_args,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_emcee); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_EnsembleSampler); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_INCREF(__pyx_v_nwalkers); __Pyx_GIVEREF(__pyx_v_nwalkers); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_nwalkers); __Pyx_INCREF(__pyx_v_ndim); __Pyx_GIVEREF(__pyx_v_ndim); PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_ndim); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_kwargs, __pyx_v_logpost_args) < 0) __PYX_ERR(0, 776, __pyx_L1_error) /* … */ __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_15, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_13); __pyx_t_13 = 0;
+0777: pool=mcmc_pool)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_pool, __pyx_v_mcmc_pool) < 0) __PYX_ERR(0, 776, __pyx_L1_error)
0778: else:
+0779: sampler = emcee.EnsembleSampler(nwalkers, ndim, self._logposterior, kwargs=logpost_args)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_emcee); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_EnsembleSampler); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_INCREF(__pyx_v_nwalkers);
__Pyx_GIVEREF(__pyx_v_nwalkers);
PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_nwalkers);
__Pyx_INCREF(__pyx_v_ndim);
__Pyx_GIVEREF(__pyx_v_ndim);
PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_ndim);
__Pyx_GIVEREF(__pyx_t_13);
PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_13);
__pyx_t_13 = 0;
__pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_kwargs, __pyx_v_logpost_args) < 0) __PYX_ERR(0, 779, __pyx_L1_error)
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_14);
__pyx_t_14 = 0;
}
__pyx_L14:;
0780:
+0781: sampler.run_mcmc(p0, nsamples, progress=verbose)
__pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_mcmc); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_INCREF(__pyx_v_p0); __Pyx_GIVEREF(__pyx_v_p0); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_p0); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_nsamples); __pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 781, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_13, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0782: else:
0783: # Continue running an existing MCMC chain.
+0784: if nprocesses > 1:
/*else*/ {
__pyx_t_4 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 784, __pyx_L1_error)
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 784, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
/* … */
goto __pyx_L15;
}
+0785: sampler.pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_4 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_15, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, __pyx_t_4) < 0) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0786: elif sampler.pool is not None:
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 786, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = (__pyx_t_4 != Py_None); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__pyx_t_6 != 0); if (__pyx_t_3) { /* … */ } __pyx_L15:;
+0787: sampler.pool = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, Py_None) < 0) __PYX_ERR(0, 787, __pyx_L1_error)
0788:
+0789: sampler.run_mcmc(None, nsamples, progress=verbose)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_mcmc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_13, 0, Py_None); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_nsamples); __pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 789, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, __pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __pyx_L13:;
0790:
+0791: if sampler.pool is not None:
__pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_3 = (__pyx_t_14 != Py_None); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_6 = (__pyx_t_3 != 0); if (__pyx_t_6) { /* … */ }
+0792: sampler.pool.close()
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_close); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_14 = (__pyx_t_15) ? __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_15) : __Pyx_PyObject_CallNoArg(__pyx_t_13); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+0793: sampler.pool.join()
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_join); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } __pyx_t_14 = (__pyx_t_13) ? __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_13) : __Pyx_PyObject_CallNoArg(__pyx_t_15); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+0794: sampler.pool.clear()
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clear); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_14 = (__pyx_t_15) ? __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_15) : __Pyx_PyObject_CallNoArg(__pyx_t_13); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
0795:
+0796: return sampler
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_sampler); __pyx_r = __pyx_v_sampler; goto __pyx_L0;
0797:
+0798: def infer_mcmc_process_result(self, sampler, prior_dict, contactMatrix=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_31infer_mcmc_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_30infer_mcmc_process_result[] = "\n Take the sampler generated by `pyross.inference.infer_mcmc` and produce output dictionaries for further use in the\n pyross framework. See `pyross.inference.infer_mcmc` for additional description of parameters.\n\n Parameters\n ----------\n sampler: emcee.EnsembleSampler\n Output of `pyross.inference.infer_mcmc`.\n prior_dict: dict\n contactMatrix: callable, optional\n generator: pyross.contactMatrix, optional\n intervention_fun: callable, optional\n flat: bool, optional\n This decides whether to return the samples as for each chain separately (False) or as as a combined\n list (True). Default is True.\n discard: int, optional\n The number of initial samples to discard in each chain (to account for burn-in). Default is 0.\n thin: int, optional\n Thin out the chain by taking only the n-tn element in each chain. Default is 1 (no thinning).\n **catchall_kwargs: dict\n Catched further provided arguments and ignores them.\n\n Returns\n -------\n output_samples: list of dict (if flat=True), or list of list of dict (if flat=False)\n The processed posterior samples.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_31infer_mcmc_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_flat = 0;
PyObject *__pyx_v_discard = 0;
PyObject *__pyx_v_thin = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_mcmc_process_result (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_prior_dict,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_flat,&__pyx_n_s_discard,&__pyx_n_s_thin,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_30infer_mcmc_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_flat, PyObject *__pyx_v_discard, PyObject *__pyx_v_thin, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_samples = NULL;
PyObject *__pyx_v_log_posts = NULL;
PyObject *__pyx_v_samples_per_chain = NULL;
PyObject *__pyx_v_nr_chains = NULL;
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_weight = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_output_dict = NULL;
CYTHON_UNUSED PyObject *__pyx_8genexpr1__pyx_v__ = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_mcmc_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_mcmc_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_samples);
__Pyx_XDECREF(__pyx_v_log_posts);
__Pyx_XDECREF(__pyx_v_samples_per_chain);
__Pyx_XDECREF(__pyx_v_nr_chains);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_weight);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v__);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0799: intervention_fun=None, flat=True, discard=0, thin=1, **catchall_kwargs):
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_True);
values[6] = ((PyObject *)__pyx_int_0);
values[7] = ((PyObject *)__pyx_int_1);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_mcmc_process_result", 0, 2, 8, 1); __PYX_ERR(0, 798, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_discard);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thin);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "infer_mcmc_process_result") < 0)) __PYX_ERR(0, 798, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_prior_dict = values[1];
__pyx_v_contactMatrix = values[2];
__pyx_v_generator = values[3];
__pyx_v_intervention_fun = values[4];
__pyx_v_flat = values[5];
__pyx_v_discard = values[6];
__pyx_v_thin = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_mcmc_process_result", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 798, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_mcmc_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_30infer_mcmc_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_prior_dict, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_flat, __pyx_v_discard, __pyx_v_thin, __pyx_v_catchall_kwargs);
0800: """
0801: Take the sampler generated by `pyross.inference.infer_mcmc` and produce output dictionaries for further use in the
0802: pyross framework. See `pyross.inference.infer_mcmc` for additional description of parameters.
0803:
0804: Parameters
0805: ----------
0806: sampler: emcee.EnsembleSampler
0807: Output of `pyross.inference.infer_mcmc`.
0808: prior_dict: dict
0809: contactMatrix: callable, optional
0810: generator: pyross.contactMatrix, optional
0811: intervention_fun: callable, optional
0812: flat: bool, optional
0813: This decides whether to return the samples as for each chain separately (False) or as as a combined
0814: list (True). Default is True.
0815: discard: int, optional
0816: The number of initial samples to discard in each chain (to account for burn-in). Default is 0.
0817: thin: int, optional
0818: Thin out the chain by taking only the n-tn element in each chain. Default is 1 (no thinning).
0819: **catchall_kwargs: dict
0820: Catched further provided arguments and ignores them.
0821:
0822: Returns
0823: -------
0824: output_samples: list of dict (if flat=True), or list of list of dict (if flat=False)
0825: The processed posterior samples.
0826: """
+0827: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0828: prior_names, keys, guess, stds, _, _, bounds, flat_guess_range, is_scale_parameter, scaled_guesses \
__pyx_v_prior_names = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_v_keys = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v__ = __pyx_t_7;
__pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_8);
__pyx_t_8 = 0;
__pyx_v_bounds = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v_flat_guess_range = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_is_scale_parameter = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_scaled_guesses = __pyx_t_12;
__pyx_t_12 = 0;
+0829: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_check_length, __pyx_t_3) < 0) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 828, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_7 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_9 = PyList_GET_ITEM(sequence, 6); __pyx_t_10 = PyList_GET_ITEM(sequence, 7); __pyx_t_11 = PyList_GET_ITEM(sequence, 8); __pyx_t_12 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_1,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 10) < 0) __PYX_ERR(0, 828, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 828, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0830: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_Prior); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_prior = __pyx_t_3; __pyx_t_3 = 0;
0831:
+0832: samples = sampler.get_chain(flat=flat, thin=thin, discard=discard)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_get_chain); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 832, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 832, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 832, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_samples = __pyx_t_10; __pyx_t_10 = 0;
+0833: log_posts = sampler.get_log_prob(flat=flat, thin=thin, discard=discard)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_get_log_prob); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 833, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 833, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 833, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_log_posts = __pyx_t_3; __pyx_t_3 = 0;
+0834: samples_per_chain = samples.shape[0]
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_samples_per_chain = __pyx_t_12; __pyx_t_12 = 0;
+0835: nr_chains = 1 if flat else samples.shape[1]
__pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 835, __pyx_L1_error) if (__pyx_t_15) { __Pyx_INCREF(__pyx_int_1); __pyx_t_12 = __pyx_int_1; } else { __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __pyx_t_10; __pyx_t_10 = 0; } __pyx_v_nr_chains = __pyx_t_12; __pyx_t_12 = 0;
+0836: if flat:
__pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 836, __pyx_L1_error) if (__pyx_t_15) { /* … */ goto __pyx_L5; }
+0837: output_samples = []
__pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_output_samples = ((PyObject*)__pyx_t_12); __pyx_t_12 = 0;
0838: else:
+0839: output_samples = [[] for _ in nr_chains]
/*else*/ {
{ /* enter inner scope */
__pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_12);
if (likely(PyList_CheckExact(__pyx_v_nr_chains)) || PyTuple_CheckExact(__pyx_v_nr_chains)) {
__pyx_t_10 = __pyx_v_nr_chains; __Pyx_INCREF(__pyx_t_10); __pyx_t_16 = 0;
__pyx_t_17 = NULL;
} else {
__pyx_t_16 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_nr_chains); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 839, __pyx_L8_error)
}
for (;;) {
if (likely(!__pyx_t_17)) {
if (likely(PyList_CheckExact(__pyx_t_10))) {
if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_10)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_16); __Pyx_INCREF(__pyx_t_3); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 839, __pyx_L8_error)
#else
__pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
} else {
if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_16); __Pyx_INCREF(__pyx_t_3); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 839, __pyx_L8_error)
#else
__pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
}
} else {
__pyx_t_3 = __pyx_t_17(__pyx_t_10);
if (unlikely(!__pyx_t_3)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 839, __pyx_L8_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v__, __pyx_t_3);
__pyx_t_3 = 0;
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 839, __pyx_L8_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v__); __pyx_8genexpr1__pyx_v__ = 0;
goto __pyx_L11_exit_scope;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v__); __pyx_8genexpr1__pyx_v__ = 0;
goto __pyx_L1_error;
__pyx_L11_exit_scope:;
} /* exit inner scope */
__pyx_v_output_samples = ((PyObject*)__pyx_t_12);
__pyx_t_12 = 0;
}
__pyx_L5:;
0840:
+0841: for i in range(samples_per_chain):
__pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_samples_per_chain); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) { __pyx_t_10 = __pyx_t_12; __Pyx_INCREF(__pyx_t_10); __pyx_t_16 = 0; __pyx_t_17 = NULL; } else { __pyx_t_16 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 841, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; for (;;) { if (likely(!__pyx_t_17)) { if (likely(PyList_CheckExact(__pyx_t_10))) { if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_16); __Pyx_INCREF(__pyx_t_12); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 841, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } else { if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_16); __Pyx_INCREF(__pyx_t_12); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 841, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } } else { __pyx_t_12 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_12)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 841, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_12); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_12); __pyx_t_12 = 0; /* … */ } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+0842: for j in range(nr_chains):
__pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nr_chains); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) { __pyx_t_3 = __pyx_t_12; __Pyx_INCREF(__pyx_t_3); __pyx_t_18 = 0; __pyx_t_19 = NULL; } else { __pyx_t_18 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_19 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 842, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; for (;;) { if (likely(!__pyx_t_19)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_18); __Pyx_INCREF(__pyx_t_12); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 842, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_3, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } else { if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_18); __Pyx_INCREF(__pyx_t_12); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 842, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_3, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } } else { __pyx_t_12 = __pyx_t_19(__pyx_t_3); if (unlikely(!__pyx_t_12)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 842, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_12); } __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_12); __pyx_t_12 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0843: if flat:
__pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 843, __pyx_L1_error) if (__pyx_t_15) { /* … */ goto __pyx_L16; }
+0844: sample = samples[i,:]
__pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_i); __Pyx_INCREF(__pyx_slice_); __Pyx_GIVEREF(__pyx_slice_); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_slice_); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_samples, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_11); __pyx_t_11 = 0;
+0845: l_post = log_posts[i]
__pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_log_posts, __pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_11); __pyx_t_11 = 0;
0846: else:
+0847: sample = samples[i, j, :]
/*else*/ {
__pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_INCREF(__pyx_v_i);
__Pyx_GIVEREF(__pyx_v_i);
PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_i);
__Pyx_INCREF(__pyx_v_j);
__Pyx_GIVEREF(__pyx_v_j);
PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_j);
__Pyx_INCREF(__pyx_slice_);
__Pyx_GIVEREF(__pyx_slice_);
PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_slice_);
__pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_samples, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_12);
__pyx_t_12 = 0;
+0848: l_post = log_posts[i, j]
__pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_j); __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_log_posts, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_11); __pyx_t_11 = 0; } __pyx_L16:;
+0849: weight = 1.0 / (samples_per_chain * nr_chains)
__pyx_t_11 = PyNumber_Multiply(__pyx_v_samples_per_chain, __pyx_v_nr_chains); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_11, 1.0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF_SET(__pyx_v_weight, __pyx_t_12); __pyx_t_12 = 0;
0850:
+0851: orig_params = pyross.utils.unflatten_parameters(sample, flat_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pyross); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+0852: is_scale_parameter, scaled_guesses)
__pyx_t_9 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_11)) {
PyObject *__pyx_temp[5] = {__pyx_t_9, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses};
__pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 851, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_GOTREF(__pyx_t_12);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
PyObject *__pyx_temp[5] = {__pyx_t_9, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses};
__pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 851, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_GOTREF(__pyx_t_12);
} else
#endif
{
__pyx_t_8 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (__pyx_t_9) {
__Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
}
__Pyx_INCREF(__pyx_v_sample);
__Pyx_GIVEREF(__pyx_v_sample);
PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_v_sample);
__Pyx_INCREF(__pyx_v_flat_guess_range);
__Pyx_GIVEREF(__pyx_v_flat_guess_range);
PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_v_flat_guess_range);
__Pyx_INCREF(__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_v_scaled_guesses);
__Pyx_GIVEREF(__pyx_v_scaled_guesses);
PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_4, __pyx_v_scaled_guesses);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF_SET(__pyx_v_orig_params, __pyx_t_12);
__pyx_t_12 = 0;
0853:
+0854: map_params_dict, map_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_orig_params); __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 854, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_9))) || (PyList_CheckExact(__pyx_t_9))) { PyObject* sequence = __pyx_t_9; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 854, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_14(__pyx_t_12); if (unlikely(!__pyx_t_8)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_11 = __pyx_t_14(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_12), 2) < 0) __PYX_ERR(0, 854, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L18_unpacking_done; __pyx_L17_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 854, __pyx_L1_error) __pyx_L18_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_map_params_dict, __pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_map_control_params_dict, __pyx_t_11); __pyx_t_11 = 0;
+0855: self.set_params(map_params_dict)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_9 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_8, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
0856:
+0857: if generator is not None:
__pyx_t_15 = (__pyx_v_generator != Py_None);
__pyx_t_20 = (__pyx_t_15 != 0);
if (__pyx_t_20) {
/* … */
}
+0858: if intervention_fun is None:
__pyx_t_20 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_15 = (__pyx_t_20 != 0);
if (__pyx_t_15) {
/* … */
goto __pyx_L20;
}
+0859: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 859, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_11 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } else { __pyx_t_11 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_8; __pyx_t_8 = 0;
0860: else:
+0861: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 861, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_9 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
} else {
__pyx_t_9 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_GIVEREF(__pyx_t_12);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_12;
__pyx_t_12 = 0;
}
__pyx_L20:;
0862:
+0863: l_prior = np.sum(prior.logpdf(sample))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_sum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_9 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_12 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF_SET(__pyx_v_l_prior, __pyx_t_12); __pyx_t_12 = 0;
+0864: l_like = l_post - l_prior
__pyx_t_12 = PyNumber_Subtract(__pyx_v_l_post, __pyx_v_l_prior); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_XDECREF_SET(__pyx_v_l_like, __pyx_t_12); __pyx_t_12 = 0;
0865: output_dict = {
+0866: 'params_dict': map_params_dict, 'flat_params': sample, 'param_keys': keys,
__pyx_t_12 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_params_dict, __pyx_v_map_params_dict) < 0) __PYX_ERR(0, 866, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_flat_params, __pyx_v_sample) < 0) __PYX_ERR(0, 866, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 866, __pyx_L1_error)
+0867: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 866, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 866, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 866, __pyx_L1_error)
+0868: 'weight':weight, 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_weight, __pyx_v_weight) < 0) __PYX_ERR(0, 866, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 866, __pyx_L1_error)
+0869: 'param_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_param_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 866, __pyx_L1_error)
+0870: 'scaled_param_guesses':scaled_guesses,
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 866, __pyx_L1_error)
+0871: 'prior':prior
if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 866, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_output_dict, ((PyObject*)__pyx_t_12)); __pyx_t_12 = 0;
0872: }
+0873: if map_control_params_dict != {}:
__pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = PyObject_RichCompare(__pyx_v_map_control_params_dict, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 873, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_15) { /* … */ }
+0874: output_dict['control_params_dict'] = map_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_map_control_params_dict) < 0)) __PYX_ERR(0, 874, __pyx_L1_error)
0875:
+0876: if flat:
__pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 876, __pyx_L1_error) if (__pyx_t_15) { /* … */ goto __pyx_L22; }
+0877: output_samples.append(output_dict)
__pyx_t_21 = __Pyx_PyList_Append(__pyx_v_output_samples, __pyx_v_output_dict); if (unlikely(__pyx_t_21 == ((int)-1))) __PYX_ERR(0, 877, __pyx_L1_error)
0878: else:
+0879: output_samples[j].append(output_dict)
/*else*/ {
__pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_output_samples, __pyx_v_j); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 879, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_21 = __Pyx_PyObject_Append(__pyx_t_11, __pyx_v_output_dict); if (unlikely(__pyx_t_21 == ((int)-1))) __PYX_ERR(0, 879, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
__pyx_L22:;
0880:
+0881: return output_samples
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_samples); __pyx_r = __pyx_v_output_samples; goto __pyx_L0;
0882:
0883:
+0884: def _mean(self, params, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_33_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_32_mean[] = "Objective function for differentiation call in FIM and FIM_det.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_33_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_param_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_x0 = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_param_keys,&__pyx_n_s_param_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_inter_steps,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_32_mean(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_param_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_x0, PyObject *__pyx_v_Tf, PyObject *__pyx_v_inter_steps) {
PyObject *__pyx_v_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_Nf = NULL;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean", 0);
__Pyx_INCREF(__pyx_v_x0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type._mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_Nf);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0885: generator=None, intervention_fun=None,
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
+0886: param_keys=None,
values[4] = ((PyObject *)Py_None);
+0887: param_guess_range=None, is_scale_parameter=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+0888: scaled_param_guesses=None,
values[7] = ((PyObject *)Py_None);
+0889: x0=None, Tf=None, inter_steps=None):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mean") < 0)) __PYX_ERR(0, 884, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_contactMatrix = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_param_keys = values[4];
__pyx_v_param_guess_range = values[5];
__pyx_v_is_scale_parameter = values[6];
__pyx_v_scaled_param_guesses = values[7];
__pyx_v_x0 = values[8];
__pyx_v_Tf = values[9];
__pyx_v_inter_steps = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_mean", 0, 1, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 884, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_32_mean(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_param_keys, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_x0, __pyx_v_Tf, __pyx_v_inter_steps);
0890: """Objective function for differentiation call in FIM and FIM_det."""
+0891: param_estimates = np.copy(params)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_params) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_params); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_param_estimates = __pyx_t_1; __pyx_t_1 = 0;
0892:
+0893: orig_params = pyross.utils.unflatten_parameters(param_estimates,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0894: param_guess_range,
0895: is_scale_parameter,
+0896: scaled_param_guesses)
__pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_param_estimates); __Pyx_GIVEREF(__pyx_v_param_estimates); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_param_estimates); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_scaled_param_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
0897:
+0898: map_params_dict, map_control_params_dict = self.fill_params_dict(param_keys, orig_params, return_additional_params=True)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_orig_params); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 898, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 898, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_1), 2) < 0) __PYX_ERR(0, 898, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 898, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_map_control_params_dict = __pyx_t_3; __pyx_t_3 = 0;
+0899: self.set_params(map_params_dict)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0900:
+0901: if generator is not None:
__pyx_t_7 = (__pyx_v_generator != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
}
+0902: if intervention_fun is None:
__pyx_t_8 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_7 = (__pyx_t_8 != 0);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
+0903: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 903, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_3 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_5; __pyx_t_5 = 0;
0904: else:
+0905: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 905, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_2 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
} else {
__pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L6:;
0906:
+0907: Nf = Tf+1
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_Tf, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_Nf = __pyx_t_1; __pyx_t_1 = 0;
0908:
+0909: if inter_steps:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_inter_steps); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 909, __pyx_L1_error) if (__pyx_t_7) { /* … */ goto __pyx_L7; }
+0910: x0 = np.multiply(x0, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x0, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x0, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_v_x0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_x0, __pyx_t_1); __pyx_t_1 = 0;
+0911: xm = pyross.utils.forward_euler_integration(self._rhs0, x0, 0, Tf, Nf, inter_steps)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_9, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_9, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_5 = PyTuple_New(6+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_x0); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_int_0); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_inter_steps); __pyx_t_9 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xm = __pyx_t_1; __pyx_t_1 = 0;
+0912: xm = xm[::inter_steps]
__pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_v_inter_steps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_xm, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_3); __pyx_t_3 = 0;
+0913: xm = np.divide(xm, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_divide); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_xm, __pyx_t_1}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_xm, __pyx_t_1}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(__pyx_v_xm); __Pyx_GIVEREF(__pyx_v_xm); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_v_xm); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_3); __pyx_t_3 = 0;
0914: else:
+0915: xm = self.integrate(x0, 0, Tf, Nf)
/*else*/ {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf};
__pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf};
__pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
{
__pyx_t_1 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_x0);
__Pyx_GIVEREF(__pyx_v_x0);
PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_v_x0);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_0);
__Pyx_INCREF(__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_v_Tf);
PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_4, __pyx_v_Tf);
__Pyx_INCREF(__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_v_Nf);
PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_4, __pyx_v_Nf);
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_xm = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L7:;
+0916: return np.ravel(xm[1:])
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_xm, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* … */ __pyx_slice__8 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__8); __Pyx_GIVEREF(__pyx_slice__8);
0917:
0918:
+0919: def _cov(self, params, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_35_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_34_cov[] = "Objective function for differentiation call in FIM.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_35_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_param_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_x0 = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_cov (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_param_keys,&__pyx_n_s_param_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_Tf,&__pyx_n_s_x0,&__pyx_n_s_inter_steps,&__pyx_n_s_tangent,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_34_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_param_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_Tf, PyObject *__pyx_v_x0, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_Nf = NULL;
CYTHON_UNUSED PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_full_cov = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_cov", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_Nf);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_full_cov);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0920: generator=None, intervention_fun=None,
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
+0921: param_keys=None,
values[4] = ((PyObject *)Py_None);
+0922: param_guess_range=None, is_scale_parameter=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+0923: scaled_param_guesses=None,
values[7] = ((PyObject *)Py_None);
+0924: Tf=None, x0=None,
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
+0925: inter_steps=None, tangent=False):
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_cov") < 0)) __PYX_ERR(0, 919, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_contactMatrix = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_param_keys = values[4];
__pyx_v_param_guess_range = values[5];
__pyx_v_is_scale_parameter = values[6];
__pyx_v_scaled_param_guesses = values[7];
__pyx_v_Tf = values[8];
__pyx_v_x0 = values[9];
__pyx_v_inter_steps = values[10];
__pyx_v_tangent = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_cov", 0, 1, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 919, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_34_cov(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_param_keys, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_Tf, __pyx_v_x0, __pyx_v_inter_steps, __pyx_v_tangent);
0926: """Objective function for differentiation call in FIM."""
+0927: param_estimates = np.copy(params)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_params) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_params); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 927, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_param_estimates = __pyx_t_1; __pyx_t_1 = 0;
0928:
+0929: orig_params = pyross.utils.unflatten_parameters(param_estimates,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0930: param_guess_range,
0931: is_scale_parameter,
+0932: scaled_param_guesses)
__pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_param_estimates); __Pyx_GIVEREF(__pyx_v_param_estimates); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_param_estimates); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_scaled_param_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
0933:
+0934: map_params_dict, map_control_params_dict = self.fill_params_dict(param_keys, orig_params, return_additional_params=True)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_orig_params); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 934, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 934, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_1), 2) < 0) __PYX_ERR(0, 934, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 934, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_map_control_params_dict = __pyx_t_3; __pyx_t_3 = 0;
+0935: self.set_params(map_params_dict)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0936:
+0937: if generator is not None:
__pyx_t_7 = (__pyx_v_generator != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
}
+0938: if intervention_fun is None:
__pyx_t_8 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_7 = (__pyx_t_8 != 0);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
+0939: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 939, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_3 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_5; __pyx_t_5 = 0;
0940: else:
+0941: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 941, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_2 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
} else {
__pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L6:;
0942:
+0943: Nf = Tf+1
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_Tf, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_Nf = __pyx_t_1; __pyx_t_1 = 0;
0944:
+0945: if tangent:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 945, __pyx_L1_error) if (__pyx_t_7) { /* … */ goto __pyx_L7; }
+0946: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf,
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 946, __pyx_L1_error) __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 946, __pyx_L1_error) __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 946, __pyx_L1_error) /* … */ __pyx_t_13.__pyx_n = 1; __pyx_t_13.inter_steps = __pyx_t_12; __pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_t_9, __pyx_t_10, __pyx_t_11, 0, &__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 946, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 946, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 946, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_v_xm = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_full_cov = __pyx_t_3; __pyx_t_3 = 0;
+0947: inter_steps)
__pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 947, __pyx_L1_error)
0948: else:
+0949: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, inter_steps)
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 949, __pyx_L1_error)
__pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 949, __pyx_L1_error)
__pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 949, __pyx_L1_error)
__pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 949, __pyx_L1_error)
__pyx_t_14.__pyx_n = 1;
__pyx_t_14.inter_steps = __pyx_t_11;
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_t_9, __pyx_t_10, __pyx_t_12, 0, &__pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 949, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_3 = PyList_GET_ITEM(sequence, 0);
__pyx_t_2 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
#else
__pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L10_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L10_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 949, __pyx_L1_error)
__pyx_t_6 = NULL;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L11_unpacking_done;
__pyx_L10_unpacking_failed:;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 949, __pyx_L1_error)
__pyx_L11_unpacking_done:;
}
__pyx_v_xm = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_full_cov = __pyx_t_2;
__pyx_t_2 = 0;
}
__pyx_L7:;
0950:
+0951: return full_cov
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_full_cov); __pyx_r = __pyx_v_full_cov; goto __pyx_L0;
0952:
0953:
+0954: def FIM(self, x, Tf, infer_result, contactMatrix=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_37FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_36FIM[] = "\n Computes the Fisher Information Matrix (FIM) for the MAP estimates of a stochastic SIR type model.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix \n with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. \n If not specified, \n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *nu""mpy.divide(numpy.spacing(infer_result['log_likelihood']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. It is recommended to use a step-size greater or equal to `eps`. \n Decreasing the step size too small can result in round-off error.\n inter_steps: int, optional\n Intermediate steps for interpolation between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make \n computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method` \n for the deterministic integration. We have found that forward Euler is generally slower, but more stable \n for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100. \n\n\n Returns\n -------\n FIM: 2d numpy.array\n The Fisher Information Matrix \n\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_37FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_inter_steps,0};
PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_36FIM(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_inter_steps) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *__pyx_cur_scope;
PyObject *__pyx_v_infer_result_loc = NULL;
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_mean = 0;
PyObject *__pyx_v_covariance = 0;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_invcov = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_v_dcov = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_t1 = NULL;
PyObject *__pyx_v_t2 = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct__FIM(__pyx_ptype_6pyross_9inference___pyx_scope_struct__FIM, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 954, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_generator = __pyx_v_generator;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator);
__pyx_cur_scope->__pyx_v_intervention_fun = __pyx_v_intervention_fun;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
__pyx_cur_scope->__pyx_v_inter_steps = __pyx_v_inter_steps;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_infer_result_loc);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_covariance);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_FIM);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XDECREF(__pyx_v_dcov);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_t1);
__Pyx_XDECREF(__pyx_v_t2);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM {
PyObject_HEAD
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_generator;
PyObject *__pyx_v_inter_steps;
PyObject *__pyx_v_intervention_fun;
PyObject *__pyx_v_kwargs;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
PyObject *__pyx_v_x0;
};
+0955: intervention_fun=None, tangent=False, eps=None, inter_steps=100):
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 3, 9, 1); __PYX_ERR(0, 954, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 3, 9, 2); __PYX_ERR(0, 954, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[8] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "FIM") < 0)) __PYX_ERR(0, 954, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_infer_result = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_eps = values[7];
__pyx_v_inter_steps = values[8];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("FIM", 0, 3, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 954, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_36FIM(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_inter_steps);
0956: """
0957: Computes the Fisher Information Matrix (FIM) for the MAP estimates of a stochastic SIR type model.
0958:
0959: Parameters
0960: ----------
0961: x: 2d numpy.array
0962: Observed trajectory (number of data points x (age groups * model classes))
0963: Tf: float
0964: Total time of the trajectory
0965: infer_result: dict
0966: Dictionary returned by latent_infer
0967: contactMatrix: callable, optional
0968: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
0969: Either a contactMatrix or a generator must be specified.
0970: generator: pyross.contactMatrix, optional
0971: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
0972: parameters.
0973: Either a contactMatrix or a generator must be specified.
0974: intervention_fun: callable, optional
0975: The calling signature is `intervention_func(t, **kwargs)`,
0976: where t is time and kwargs are other keyword arguments for the function.
0977: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
0978: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
0979: If not set, assume intervention that's constant in time.
0980: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
0981: tangent: bool, optional
0982: Set to True to use tangent space inference. Default is False.
0983: eps: float or numpy.array, optional
0984: Step size for numerical differentiation of the process mean and its full covariance matrix
0985: with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
0986: If not specified,
0987:
0988: .. code-block:: python
0989:
0990: eps = 100*infer_result['flat_params']
0991: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
0992: infer_result['log_likelihood'])**(0.25)
0993:
0994: is used. It is recommended to use a step-size greater or equal to `eps`.
0995: Decreasing the step size too small can result in round-off error.
0996: inter_steps: int, optional
0997: Intermediate steps for interpolation between observations for the deterministic forward Euler integration.
0998: A higher number of intermediate steps will improve the accuracy of the result, but will make
0999: computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method`
1000: for the deterministic integration. We have found that forward Euler is generally slower, but more stable
1001: for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100.
1002:
1003:
1004: Returns
1005: -------
1006: FIM: 2d numpy.array
1007: The Fisher Information Matrix
1008:
1009: """
1010:
1011:
1012:
1013: # Sanity checks of the inputs
+1014: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_generator); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1015: infer_result_loc = infer_result.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1015, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_infer_result_loc = __pyx_t_1; __pyx_t_1 = 0;
1016: # backwards compatibility
+1017: if 'flat_map' in infer_result_loc:
__pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_flat_map, __pyx_v_infer_result_loc, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1017, __pyx_L1_error) __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { /* … */ }
+1018: infer_result_loc['flat_params'] = infer_result_loc.pop('flat_map')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result_loc, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_n_u_flat_map) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_flat_map); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params, __pyx_t_1) < 0)) __PYX_ERR(0, 1018, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1019:
+1020: flat_params = np.copy(infer_result_loc['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
1021:
+1022: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1023: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__9; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; for (;;) { if (__pyx_t_8 >= 4) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1023, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__9 = PyTuple_Pack(4, __pyx_n_u_param_keys, __pyx_n_u_param_guess_range, __pyx_n_u_is_scale_parameter, __pyx_n_u_scaled_param_guesses); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1023, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9);
1024: 'scaled_param_guesses']:
+1025: kwargs[key] = infer_result_loc[key]
__pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_kwargs, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 1025, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1026:
+1027: x0 = x[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
1028:
+1029: def mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_1mean = {"mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__10);
__Pyx_GIVEREF(__pyx_tuple__10);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_1mean, 0, __pyx_n_s_FIM_locals_mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean_2, 1029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 1029, __pyx_L1_error)
+1030: return self._mean(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1030, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1030, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1030, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+1031: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 1031, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
+1032: intervention_fun=intervention_fun, x0=x0,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 1032, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_x0)) { __Pyx_RaiseClosureNameError("x0"); __PYX_ERR(0, 1032, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_x0, __pyx_cur_scope->__pyx_v_x0) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
+1033: Tf=Tf, inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 1033, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 1033, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+1034: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 1034, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 1034, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 1034, __pyx_L1_error)
1035:
+1036: def covariance(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3covariance(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_3covariance = {"covariance", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3covariance, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3covariance(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("covariance (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_2covariance(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_2covariance(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("covariance", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct__FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM.covariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1036, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__12);
__Pyx_GIVEREF(__pyx_tuple__12);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_3covariance, 0, __pyx_n_s_FIM_locals_covariance, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_covariance = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_covariance, 1036, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 1036, __pyx_L1_error)
+1037: return self._cov(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1037, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_cov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1037, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1037, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+1038: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 1038, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
+1039: intervention_fun=intervention_fun, x0=x0,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 1039, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_x0)) { __Pyx_RaiseClosureNameError("x0"); __PYX_ERR(0, 1039, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_x0, __pyx_cur_scope->__pyx_v_x0) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
+1040: Tf=Tf, tangent=tangent, inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 1040, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 1040, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tangent, __pyx_cur_scope->__pyx_v_tangent) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 1040, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 1037, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+1041: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 1041, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 1041, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 1041, __pyx_L1_error)
1042:
+1043: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1043, __pyx_L1_error) __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { /* … */ goto __pyx_L6; }
+1044: xx = infer_result_loc['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+1045: fx = abs(infer_result_loc['log_likelihood'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_log_likelihood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_2; __pyx_t_2 = 0;
+1046: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_2 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_divide); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_spacing); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
1047: #eps = 10.*np.spacing(flat_params)**np.divide(1,3)
+1048: elif np.isscalar(eps):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isscalar); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_eps) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_eps); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { /* … */ } __pyx_L6:;
+1049: eps = np.repeat(eps, repeats=len(flat_params))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_repeat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_eps); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1049, __pyx_L1_error) __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_repeats, __pyx_t_9) < 0) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_9); __pyx_t_9 = 0;
+1050: print('eps-vector used for differentiation: ', eps)
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_GIVEREF(__pyx_kp_u_eps_vector_used_for_differentiat); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_eps); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1051:
+1052: cov = covariance(flat_params)
__pyx_t_3 = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_2covariance(__pyx_v_covariance, __pyx_v_flat_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_cov = __pyx_t_3; __pyx_t_3 = 0;
+1053: invcov = np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linalg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inv); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_1, __pyx_v_cov) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_cov); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_invcov = __pyx_t_3; __pyx_t_3 = 0;
1054:
+1055: dim = len(flat_params)
__pyx_t_8 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1055, __pyx_L1_error) __pyx_v_dim = __pyx_t_8;
+1056: FIM = np.empty((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_FIM = __pyx_t_3; __pyx_t_3 = 0;
+1057: dmu = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_dmu = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+1058: dcov = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_dcov = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
1059:
+1060: for i in range(dim):
__pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1060, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1060, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1060, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1060, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1061: dmu.append(pyross.utils.partial_derivative(mean, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_mean); __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 1061, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 1061, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dx, __pyx_t_9) < 0) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_dmu, __pyx_t_9); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1062: dcov.append(pyross.utils.partial_derivative(covariance, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pyross); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_covariance); __Pyx_GIVEREF(__pyx_v_covariance); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_covariance); __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 1062, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 1062, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dx, __pyx_t_1) < 0) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_dcov, __pyx_t_1); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1062, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1063:
+1064: for i in range(dim):
__pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1064, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1064, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1064, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1064, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1065: t1 = dmu[i]@invcov@dmu[i]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_t1, __pyx_t_2); __pyx_t_2 = 0;
+1066: t2 = np.multiply(0.5,np.trace(invcov@dcov[i]@invcov@dcov[i]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_trace); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_invcov, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_13, __pyx_v_invcov); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_9, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_1 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_13, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_14); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_float_0_5, __pyx_t_1}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_float_0_5, __pyx_t_1}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_14 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_float_0_5); __Pyx_GIVEREF(__pyx_float_0_5); PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_4, __pyx_float_0_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_4, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_t2, __pyx_t_2); __pyx_t_2 = 0;
+1067: FIM[i,i] = t1 + t2
__pyx_t_2 = PyNumber_Add(__pyx_v_t1, __pyx_v_t2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1067, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1067, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_i); if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_t_5, __pyx_t_2) < 0)) __PYX_ERR(0, 1067, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1068:
+1069: rows,cols = np.triu_indices(dim,1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_14 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_2, __pyx_int_1}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_2, __pyx_int_1}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_1); __pyx_t_2 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1069, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_15(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_1 = __pyx_t_15(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_2), 2) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1069, __pyx_L1_error) __pyx_L12_unpacking_done:; } __pyx_v_rows = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_cols = __pyx_t_1; __pyx_t_1 = 0;
1070:
+1071: for i,j in zip(rows,cols):
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_cols); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1071, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1071, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1071, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1071, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1071, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_14)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_5)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_2 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) __PYX_ERR(0, 1071, __pyx_L1_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L16_unpacking_done; __pyx_L15_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1071, __pyx_L1_error) __pyx_L16_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1072: t1 = dmu[i]@invcov@dmu[j]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_t1, __pyx_t_5); __pyx_t_5 = 0;
+1073: t2 = np.multiply(0.5,np.trace(invcov@dcov[i]@invcov@dcov[j]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multiply); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_trace); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_invcov, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_13, __pyx_v_invcov); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_j); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_14, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_1 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_13, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_float_0_5, __pyx_t_1}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_float_0_5, __pyx_t_1}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_float_0_5); __Pyx_GIVEREF(__pyx_float_0_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_float_0_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_t2, __pyx_t_5); __pyx_t_5 = 0;
+1074: FIM[i,j] = t1 + t2
__pyx_t_5 = PyNumber_Add(__pyx_v_t1, __pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_t_2, __pyx_t_5) < 0)) __PYX_ERR(0, 1074, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1075:
+1076: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_int_neg_1}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_int_neg_1}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_neg_1); __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_i_lower = __pyx_t_3; __pyx_t_3 = 0;
+1077: FIM[i_lower] = FIM.T[i_lower]
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM, __pyx_n_s_T); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_i_lower); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_v_i_lower, __pyx_t_2) < 0)) __PYX_ERR(0, 1077, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1078: return FIM
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM); __pyx_r = __pyx_v_FIM; goto __pyx_L0;
1079:
1080:
+1081: def FIM_det(self, x, Tf, infer_result, contactMatrix=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_39FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_38FIM_det[] = "\n Computes the Fisher Information Matrix (FIM) for the MAP estimates of a deterministic (ODE based, including a constant measurement error) SIR type model.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n eps: float or numpy.array, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix with \n respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. \n If not specified, \n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood""']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.\n measurement_error: float, optional\n Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.\n inter_steps: int, optional\n Intermediate steps for interpolation between observations for the deterministic forward Euler integration. A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration. We have found that forward Euler is generally slower, but more stable for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100.\n Returns\n -------\n FIM: 2d numpy.array\n The Fisher Information Matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_39FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_measurement_error = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_det (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_eps,&__pyx_n_s_measurement_error,&__pyx_n_s_inter_steps,0};
PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_38FIM_det(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_eps, PyObject *__pyx_v_measurement_error, PyObject *__pyx_v_inter_steps) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *__pyx_cur_scope;
PyObject *__pyx_v_infer_result_loc = NULL;
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_mean = 0;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_sigma_sq = NULL;
PyObject *__pyx_v_cov_diag = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_invcov = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM_det = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_det", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_1_FIM_det(__pyx_ptype_6pyross_9inference___pyx_scope_struct_1_FIM_det, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1081, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_generator = __pyx_v_generator;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator);
__pyx_cur_scope->__pyx_v_intervention_fun = __pyx_v_intervention_fun;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__pyx_cur_scope->__pyx_v_inter_steps = __pyx_v_inter_steps;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_infer_result_loc);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_sigma_sq);
__Pyx_XDECREF(__pyx_v_cov_diag);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_FIM_det);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det {
PyObject_HEAD
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_generator;
PyObject *__pyx_v_inter_steps;
PyObject *__pyx_v_intervention_fun;
PyObject *__pyx_v_kwargs;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_x0;
};
+1082: intervention_fun=None, eps=None, measurement_error=1e-2,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)__pyx_float_1eneg_2);
values[8] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 3, 9, 1); __PYX_ERR(0, 1081, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 3, 9, 2); __PYX_ERR(0, 1081, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_measurement_error);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[8] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "FIM_det") < 0)) __PYX_ERR(0, 1081, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_infer_result = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_eps = values[6];
__pyx_v_measurement_error = values[7];
__pyx_v_inter_steps = values[8];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 3, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1081, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_38FIM_det(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_eps, __pyx_v_measurement_error, __pyx_v_inter_steps);
1083: inter_steps=100):
1084: """
1085: Computes the Fisher Information Matrix (FIM) for the MAP estimates of a deterministic (ODE based, including a constant measurement error) SIR type model.
1086:
1087: Parameters
1088: ----------
1089: x: 2d numpy.array
1090: Observed trajectory (number of data points x (age groups * model classes))
1091: Tf: float
1092: Total time of the trajectory
1093: infer_result: dict
1094: Dictionary returned by latent_infer
1095: contactMatrix: callable, optional
1096: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
1097: Either a contactMatrix or a generator must be specified.
1098: generator: pyross.contactMatrix, optional
1099: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
1100: parameters.
1101: Either a contactMatrix or a generator must be specified.
1102: intervention_fun: callable, optional
1103: The calling signature is `intervention_func(t, **kwargs)`,
1104: where t is time and kwargs are other keyword arguments for the function.
1105: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
1106: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
1107: If not set, assume intervention that's constant in time.
1108: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
1109: eps: float or numpy.array, optional
1110: Step size for numerical differentiation of the process mean and its full covariance matrix with
1111: respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
1112: If not specified,
1113:
1114: .. code-block:: python
1115:
1116: eps = 100*infer_result['flat_params']
1117: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
1118: infer_result['log_likelihood'])**(0.25)
1119:
1120: is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.
1121: measurement_error: float, optional
1122: Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.
1123: inter_steps: int, optional
1124: Intermediate steps for interpolation between observations for the deterministic forward Euler integration. A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration. We have found that forward Euler is generally slower, but more stable for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100.
1125: Returns
1126: -------
1127: FIM: 2d numpy.array
1128: The Fisher Information Matrix
1129: """
1130: # Sanity checks of the inputs
+1131: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_generator); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1132:
+1133: infer_result_loc = infer_result.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_infer_result_loc = __pyx_t_1; __pyx_t_1 = 0;
1134: # backwards compatibility
+1135: if 'flat_map' in infer_result_loc:
__pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_flat_map, __pyx_v_infer_result_loc, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1135, __pyx_L1_error) __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { /* … */ }
+1136: infer_result_loc['flat_params'] = infer_result_loc.pop('flat_map')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result_loc, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_n_u_flat_map) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_flat_map); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params, __pyx_t_1) < 0)) __PYX_ERR(0, 1136, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1137:
+1138: flat_params = np.copy(infer_result_loc['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
+1139: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1140: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__9; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; for (;;) { if (__pyx_t_8 >= 4) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1140, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1141: 'scaled_param_guesses']:
+1142: kwargs[key] = infer_result_loc[key]
__pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_kwargs, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 1142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1143:
+1144: x0 = x[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
1145:
+1146: def mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_1mean = {"mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM_det *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 1146, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__14);
__Pyx_GIVEREF(__pyx_tuple__14);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_1mean, 0, __pyx_n_s_FIM_det_locals_mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean_2, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 1146, __pyx_L1_error)
+1147: return self._mean(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1147, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1147, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1147, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+1148: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 1148, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 1147, __pyx_L1_error)
+1149: intervention_fun=intervention_fun, x0=x0,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 1149, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 1147, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_x0)) { __Pyx_RaiseClosureNameError("x0"); __PYX_ERR(0, 1149, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_x0, __pyx_cur_scope->__pyx_v_x0) < 0) __PYX_ERR(0, 1147, __pyx_L1_error)
+1150: Tf=Tf, inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 1150, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 1147, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 1150, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 1147, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+1151: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 1151, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 1151, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 1151, __pyx_L1_error)
1152:
+1153: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1153, __pyx_L1_error) __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { /* … */ goto __pyx_L6; }
+1154: xx = infer_result_loc['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+1155: fx = abs(infer_result_loc['log_likelihood'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_log_likelihood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_2; __pyx_t_2 = 0;
+1156: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_2 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_divide); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_spacing); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
1157: #eps = 10.*np.spacing(flat_params)**np.divide(1,3)
+1158: elif np.isscalar(eps):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isscalar); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_eps) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_eps); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1158, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { /* … */ } __pyx_L6:;
+1159: eps = np.repeat(eps, repeats=len(flat_params))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_repeat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_eps); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1159, __pyx_L1_error) __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_repeats, __pyx_t_9) < 0) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_9); __pyx_t_9 = 0;
+1160: print('eps-vector used for differentiation: ', eps)
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_GIVEREF(__pyx_kp_u_eps_vector_used_for_differentiat); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_eps); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1161:
+1162: sigma_sq = measurement_error*measurement_error
__pyx_t_3 = PyNumber_Multiply(__pyx_v_measurement_error, __pyx_v_measurement_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_sigma_sq = __pyx_t_3; __pyx_t_3 = 0;
+1163: cov_diag = np.repeat(sigma_sq, repeats=(int(self.dim)*(x.shape[0]-1)))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_repeat); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_sigma_sq); __Pyx_GIVEREF(__pyx_v_sigma_sq); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_sigma_sq); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_10, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_repeats, __pyx_t_10) < 0) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_diag = __pyx_t_10; __pyx_t_10 = 0;
+1164: cov = np.diag(cov_diag)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_diag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_10 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_cov_diag) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_cov_diag); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cov = __pyx_t_10; __pyx_t_10 = 0;
+1165: invcov = np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linalg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inv); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_10 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_cov) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_cov); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_invcov = __pyx_t_10; __pyx_t_10 = 0;
1166:
+1167: dim = len(flat_params)
__pyx_t_8 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1167, __pyx_L1_error) __pyx_v_dim = __pyx_t_8;
+1168: FIM_det = np.empty((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); __pyx_t_3 = 0; __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_10 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_FIM_det = __pyx_t_10; __pyx_t_10 = 0;
+1169: dmu = []
__pyx_t_10 = PyList_New(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_dmu = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0;
1170:
+1171: for i in range(dim):
__pyx_t_10 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_10 = __pyx_t_1; __Pyx_INCREF(__pyx_t_10); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1171, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_10))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1171, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1171, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1171, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1172: dmu.append(pyross.utils.partial_derivative(mean, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_mean); __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 1172, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 1172, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dx, __pyx_t_3) < 0) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_dmu, __pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1172, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1173:
+1174: for i in range(dim):
__pyx_t_10 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_10 = __pyx_t_3; __Pyx_INCREF(__pyx_t_10); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1174, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_10))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1174, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1174, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1174, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1175: FIM_det[i,i] = dmu[i]@invcov@dmu[i]
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_v_invcov); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_i); if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1175, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1176:
+1177: rows,cols = np.triu_indices(dim,1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_int_1}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_int_1}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_1); __pyx_t_2 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_10))) || (PyList_CheckExact(__pyx_t_10))) { PyObject* sequence = __pyx_t_10; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1177, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_13(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_1 = __pyx_t_13(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_2), 2) < 0) __PYX_ERR(0, 1177, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1177, __pyx_L1_error) __pyx_L12_unpacking_done:; } __pyx_v_rows = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_cols = __pyx_t_1; __pyx_t_1 = 0;
1178:
+1179: for i,j in zip(rows,cols):
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_cols); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_10 = __pyx_t_1; __Pyx_INCREF(__pyx_t_10); __pyx_t_8 = 0; __pyx_t_11 = NULL; } else { __pyx_t_8 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1179, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_10))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1179, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1179, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1179, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1179, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_3)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_9), 2) < 0) __PYX_ERR(0, 1179, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L16_unpacking_done; __pyx_L15_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1179, __pyx_L1_error) __pyx_L16_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1180: FIM_det[i,j] = dmu[i]@invcov@dmu[j]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_t_1, __pyx_t_3) < 0)) __PYX_ERR(0, 1180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1181:
+1182: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_int_neg_1}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_int_neg_1}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_int_neg_1); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_i_lower = __pyx_t_10; __pyx_t_10 = 0;
+1183: FIM_det[i_lower] = FIM_det.T[i_lower]
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM_det, __pyx_n_s_T); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_i_lower); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_v_i_lower, __pyx_t_1) < 0)) __PYX_ERR(0, 1183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1184: return FIM_det
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM_det); __pyx_r = __pyx_v_FIM_det; goto __pyx_L0;
1185:
1186:
+1187: def hessian(self, x, Tf, infer_result, contactMatrix=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_41hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_40hessian[] = "\n Computes the Hessian matrix for the MAP estimates of an SIR type model.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for finite differences computation of the hessian with respect to the parameters. \n Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. \n If not specified,\n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),""\n infer_result['log_likelihood'])**(0.25) \n\n is used. For `fd_method=\"central\"` it is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\". Default is \"central\".\n inter_steps: int, optional\n Only used if `tangent=False`. Intermediate steps for interpolation between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration. \n We have found that forward Euler is generally slower, but sometimes more stable for derivatives with respect to parameters \n than the variable step size integrators used elsewhere in pyross. Default is 0.\n Returns\n -------\n hess: 2d numpy.array\n The Hessian matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_41hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_basis = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("hessian (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_fd_method,&__pyx_n_s_inter_steps,&__pyx_n_s_nprocesses,&__pyx_n_s_basis,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_40hessian(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_fd_method, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_basis) {
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_hess = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("hessian", 0);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_hess);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1188: intervention_fun=None, tangent=False, eps=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)__pyx_n_u_central);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
+1189: fd_method="central", inter_steps=0, nprocesses=0, basis=None):
values[11] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian", 0, 3, 12, 1); __PYX_ERR(0, 1187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian", 0, 3, 12, 2); __PYX_ERR(0, 1187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_basis);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "hessian") < 0)) __PYX_ERR(0, 1187, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_infer_result = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_eps = values[7];
__pyx_v_fd_method = values[8];
__pyx_v_inter_steps = values[9];
__pyx_v_nprocesses = values[10];
__pyx_v_basis = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("hessian", 0, 3, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1187, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_40hessian(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps, __pyx_v_nprocesses, __pyx_v_basis);
1190: """
1191: Computes the Hessian matrix for the MAP estimates of an SIR type model.
1192:
1193: Parameters
1194: ----------
1195: x: 2d numpy.array
1196: Observed trajectory (number of data points x (age groups * model classes))
1197: Tf: float
1198: Total time of the trajectory
1199: infer_result: dict
1200: Dictionary returned by latent_infer
1201: contactMatrix: callable, optional
1202: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
1203: Either a contactMatrix or a generator must be specified.
1204: generator: pyross.contactMatrix, optional
1205: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
1206: parameters.
1207: Either a contactMatrix or a generator must be specified.
1208: intervention_fun: callable, optional
1209: The calling signature is `intervention_func(t, **kwargs)`,
1210: where t is time and kwargs are other keyword arguments for the function.
1211: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
1212: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
1213: If not set, assume intervention that's constant in time.
1214: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
1215: tangent: bool, optional
1216: Set to True to use tangent space inference. Default is False.
1217: eps: float or numpy.array, optional
1218: Step size for finite differences computation of the hessian with respect to the parameters.
1219: Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
1220: If not specified,
1221:
1222: .. code-block:: python
1223:
1224: eps = 100*infer_result['flat_params']
1225: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
1226: infer_result['log_likelihood'])**(0.25)
1227:
1228: is used. For `fd_method="central"` it is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.
1229: fd_method: str, optional
1230: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central". Default is "central".
1231: inter_steps: int, optional
1232: Only used if `tangent=False`. Intermediate steps for interpolation between observations for the deterministic forward Euler integration.
1233: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
1234: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
1235: We have found that forward Euler is generally slower, but sometimes more stable for derivatives with respect to parameters
1236: than the variable step size integrators used elsewhere in pyross. Default is 0.
1237: Returns
1238: -------
1239: hess: 2d numpy.array
1240: The Hessian matrix
1241: """
1242: # Sanity checks of the inputs
+1243: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1244:
+1245: flat_params = np.copy(infer_result['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
1246:
+1247: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1248: kwargs['x'] = x
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_x, __pyx_v_x) < 0)) __PYX_ERR(0, 1248, __pyx_L1_error)
+1249: kwargs['Tf'] = Tf
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_Tf, __pyx_v_Tf) < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
+1250: kwargs['tangent'] = tangent
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_tangent, __pyx_v_tangent) < 0)) __PYX_ERR(0, 1250, __pyx_L1_error)
+1251: for key in ['is_scale_parameter',
__pyx_t_1 = __pyx_tuple__16; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= 3) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1251, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__16 = PyTuple_Pack(3, __pyx_n_u_is_scale_parameter, __pyx_n_u_scaled_param_guesses, __pyx_n_u_prior); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1251, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16);
1252: 'scaled_param_guesses', 'prior']:
+1253: kwargs[key] = infer_result[key]
__pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 1253, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1254:
+1255: kwargs['keys'] = infer_result['param_keys']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_param_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_keys, __pyx_t_1) < 0)) __PYX_ERR(0, 1255, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1256: kwargs['flat_guess_range'] = infer_result['param_guess_range']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_param_guess_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_flat_guess_range, __pyx_t_1) < 0)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1257: kwargs['generator'] = generator
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_generator, __pyx_v_generator) < 0)) __PYX_ERR(0, 1257, __pyx_L1_error)
+1258: kwargs['intervention_fun'] = intervention_fun
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0)) __PYX_ERR(0, 1258, __pyx_L1_error)
+1259: kwargs['inter_steps'] = inter_steps
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_inter_steps, __pyx_v_inter_steps) < 0)) __PYX_ERR(0, 1259, __pyx_L1_error)
1260:
+1261: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1261, __pyx_L1_error) __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1261, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { /* … */ }
+1262: xx = infer_result['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+1263: fx = abs(infer_result['log_posterior'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_log_posterior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_2; __pyx_t_2 = 0;
+1264: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_2 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_divide); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_spacing); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
1265: #eps = 10.*np.spacing(flat_params)**(0.25)
+1266: print('epsilon used for differentiation: ', eps)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_epsilon_used_for_differentiation); __Pyx_GIVEREF(__pyx_kp_u_epsilon_used_for_differentiation); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_epsilon_used_for_differentiation); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_eps); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1267:
+1268: hess = hessian_finite_difference(flat_params, self._infer_to_minimize, eps, method=fd_method, nprocesses=nprocesses,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_hessian_finite_difference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_to_minimize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_flat_params); __Pyx_GIVEREF(__pyx_v_flat_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_flat_params); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_eps); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 1268, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 1268, __pyx_L1_error) /* … */ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_hess = __pyx_t_8; __pyx_t_8 = 0;
+1269: basis=basis, function_kwargs=kwargs)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_basis, __pyx_v_basis) < 0) __PYX_ERR(0, 1268, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_function_kwargs, __pyx_v_kwargs) < 0) __PYX_ERR(0, 1268, __pyx_L1_error)
+1270: return hess
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_hess); __pyx_r = __pyx_v_hess; goto __pyx_L0;
1271:
+1272: def robustness(self, FIM, FIM_det, infer_result, param_pos_1, param_pos_2,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_43robustness(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_42robustness[] = "\n Robustness analysis in a two-dimensional slice of the parameter space, revealing neutral spaces as in https://doi.org/10.1073/pnas.1015814108.\n\n Parameters\n ----------\n FIM: 2d numpy.array\n Fisher Information matrix of a stochastic model\n FIM_det: 2d numpy.array\n Fisher information matrix of the corresponding deterministic model\n infer_result: dict\n Dictionary returned by `latent_infer`\n param_pos_1: int\n Position of 'parameter 1' in map_dict['flat_map'] for x-axis\n param_pos_2: int\n Position of 'parameter 2' in map_dict['flat_map'] for y-axis\n range_1: float\n Symmetric interval around parameter 1 for which robustness will be analysed. Absolute interval: 'parameter 1' +/- range_1\n range_2: float\n Symmetric interval around parameter 2 for which robustness will be analysed. Absolute interval: 'parameter 2' +/- range_2\n resolution_1: int\n Resolution of the meshgrid in x direction.\n resolution_2: int\n Resolution of the meshgrid in y direction. Default is resolution_2=resolution_1.\n Returns\n -------\n ff: 2d numpy.array\n shape=resolution_1 x resolution_2, meshgrid for x-axis\n ss: 2d numpy.array\n shape=resolution_1 x resolution_2, meshgrid for y-axis\n Z_sto: 2d numpy.array\n shape=resolution_1 x resolution_2, expected quadratic coefficient in the Taylor expansion of the likelihood of the stochastic model\n Z_det: 2d numpy.array\n shape=resolution_1 x resolution_2, expected quadratic coefficient in the Taylor expansion of the likelihood of the deterministic model\n\n Examples\n --------\n >>> from matplotlib import pyplot as plt\n >>> from matplotlib import cm\n >>>\n >>> # positions 0 and 1 of infer_result['flat_params'] correspond to a ""scale parameter for alpha, and beta, respectively.\n >>> ff, ss, Z_sto, Z_det = estimator.robustness(FIM, FIM_det, map_dict, 0, 1, 0.5, 0.01, 20)\n >>> cmap = plt.cm.PuBu_r\n >>> levels=11\n >>> colors='black'\n >>>\n >>> c = plt.contourf(ff, ss, Z_sto, cmap=cmap, levels=levels) # heat map for the stochastic coefficient\n >>> plt.contour(ff, ss, Z_sto, colors='black', levels=levels, linewidths=0.25)\n >>> plt.contour(ff, ss, Z_det, colors=colors, levels=levels) # contour plot for the deterministic model\n >>> plt.plot(infer_result['flat_params'][0], infer_result['flat_params'][1], 'o',\n color=\"#A60628\", markersize=6) # the MAP estimate\n >>> plt.colorbar(c)\n >>> plt.xlabel(r'$\007lpha$ scale', fontsize=20, labelpad=10)\n >>> plt.ylabel(r'$\010eta$', fontsize=20, labelpad=10)\n >>> plt.show()\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_43robustness(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_FIM = 0;
PyObject *__pyx_v_FIM_det = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_param_pos_1 = 0;
PyObject *__pyx_v_param_pos_2 = 0;
PyObject *__pyx_v_range_1 = 0;
PyObject *__pyx_v_range_2 = 0;
PyObject *__pyx_v_resolution_1 = 0;
PyObject *__pyx_v_resolution_2 = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("robustness (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_FIM,&__pyx_n_s_FIM_det,&__pyx_n_s_infer_result,&__pyx_n_s_param_pos_1,&__pyx_n_s_param_pos_2,&__pyx_n_s_range_1,&__pyx_n_s_range_2,&__pyx_n_s_resolution_1,&__pyx_n_s_resolution_2,0};
PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_42robustness(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_FIM, PyObject *__pyx_v_FIM_det, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_param_pos_1, PyObject *__pyx_v_param_pos_2, PyObject *__pyx_v_range_1, PyObject *__pyx_v_range_2, PyObject *__pyx_v_resolution_1, PyObject *__pyx_v_resolution_2) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *__pyx_cur_scope;
PyObject *__pyx_v_infer_result_loc = NULL;
PyObject *__pyx_v_bilinear = 0;
PyObject *__pyx_v_param_1_range = NULL;
PyObject *__pyx_v_param_2_range = NULL;
PyObject *__pyx_v_ff = NULL;
PyObject *__pyx_v_ss = NULL;
PyObject *__pyx_v_Z_sto = NULL;
PyObject *__pyx_v_Z_det = NULL;
PyObject *__pyx_v_i_k = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_j_k = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("robustness", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_2_robustness(__pyx_ptype_6pyross_9inference___pyx_scope_struct_2_robustness, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1272, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_FIM = __pyx_v_FIM;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_FIM);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_FIM);
__pyx_cur_scope->__pyx_v_FIM_det = __pyx_v_FIM_det;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_FIM_det);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_FIM_det);
__pyx_cur_scope->__pyx_v_param_pos_1 = __pyx_v_param_pos_1;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_pos_1);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_pos_1);
__pyx_cur_scope->__pyx_v_param_pos_2 = __pyx_v_param_pos_2;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_pos_2);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_pos_2);
__Pyx_INCREF(__pyx_v_resolution_2);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type.robustness", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_infer_result_loc);
__Pyx_XDECREF(__pyx_v_bilinear);
__Pyx_XDECREF(__pyx_v_param_1_range);
__Pyx_XDECREF(__pyx_v_param_2_range);
__Pyx_XDECREF(__pyx_v_ff);
__Pyx_XDECREF(__pyx_v_ss);
__Pyx_XDECREF(__pyx_v_Z_sto);
__Pyx_XDECREF(__pyx_v_Z_det);
__Pyx_XDECREF(__pyx_v_i_k);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_j_k);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_resolution_2);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness {
PyObject_HEAD
PyObject *__pyx_v_FIM;
PyObject *__pyx_v_FIM_det;
PyObject *__pyx_v_flat_maps;
PyObject *__pyx_v_param_pos_1;
PyObject *__pyx_v_param_pos_2;
};
+1273: range_1, range_2, resolution_1, resolution_2=None):
values[8] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_FIM)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_FIM_det)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 1); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 2); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_pos_1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 3); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_pos_2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 4); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_range_1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 5); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_range_2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 6); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_resolution_1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, 7); __PYX_ERR(0, 1272, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_resolution_2);
if (value) { values[8] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "robustness") < 0)) __PYX_ERR(0, 1272, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_FIM = values[0];
__pyx_v_FIM_det = values[1];
__pyx_v_infer_result = values[2];
__pyx_v_param_pos_1 = values[3];
__pyx_v_param_pos_2 = values[4];
__pyx_v_range_1 = values[5];
__pyx_v_range_2 = values[6];
__pyx_v_resolution_1 = values[7];
__pyx_v_resolution_2 = values[8];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("robustness", 0, 8, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1272, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.robustness", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_42robustness(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_FIM, __pyx_v_FIM_det, __pyx_v_infer_result, __pyx_v_param_pos_1, __pyx_v_param_pos_2, __pyx_v_range_1, __pyx_v_range_2, __pyx_v_resolution_1, __pyx_v_resolution_2);
1274: """
1275: Robustness analysis in a two-dimensional slice of the parameter space, revealing neutral spaces as in https://doi.org/10.1073/pnas.1015814108.
1276:
1277: Parameters
1278: ----------
1279: FIM: 2d numpy.array
1280: Fisher Information matrix of a stochastic model
1281: FIM_det: 2d numpy.array
1282: Fisher information matrix of the corresponding deterministic model
1283: infer_result: dict
1284: Dictionary returned by `latent_infer`
1285: param_pos_1: int
1286: Position of 'parameter 1' in map_dict['flat_map'] for x-axis
1287: param_pos_2: int
1288: Position of 'parameter 2' in map_dict['flat_map'] for y-axis
1289: range_1: float
1290: Symmetric interval around parameter 1 for which robustness will be analysed. Absolute interval: 'parameter 1' +/- range_1
1291: range_2: float
1292: Symmetric interval around parameter 2 for which robustness will be analysed. Absolute interval: 'parameter 2' +/- range_2
1293: resolution_1: int
1294: Resolution of the meshgrid in x direction.
1295: resolution_2: int
1296: Resolution of the meshgrid in y direction. Default is resolution_2=resolution_1.
1297: Returns
1298: -------
1299: ff: 2d numpy.array
1300: shape=resolution_1 x resolution_2, meshgrid for x-axis
1301: ss: 2d numpy.array
1302: shape=resolution_1 x resolution_2, meshgrid for y-axis
1303: Z_sto: 2d numpy.array
1304: shape=resolution_1 x resolution_2, expected quadratic coefficient in the Taylor expansion of the likelihood of the stochastic model
1305: Z_det: 2d numpy.array
1306: shape=resolution_1 x resolution_2, expected quadratic coefficient in the Taylor expansion of the likelihood of the deterministic model
1307:
1308: Examples
1309: --------
1310: >>> from matplotlib import pyplot as plt
1311: >>> from matplotlib import cm
1312: >>>
1313: >>> # positions 0 and 1 of infer_result['flat_params'] correspond to a scale parameter for alpha, and beta, respectively.
1314: >>> ff, ss, Z_sto, Z_det = estimator.robustness(FIM, FIM_det, map_dict, 0, 1, 0.5, 0.01, 20)
1315: >>> cmap = plt.cm.PuBu_r
1316: >>> levels=11
1317: >>> colors='black'
1318: >>>
1319: >>> c = plt.contourf(ff, ss, Z_sto, cmap=cmap, levels=levels) # heat map for the stochastic coefficient
1320: >>> plt.contour(ff, ss, Z_sto, colors='black', levels=levels, linewidths=0.25)
1321: >>> plt.contour(ff, ss, Z_det, colors=colors, levels=levels) # contour plot for the deterministic model
1322: >>> plt.plot(infer_result['flat_params'][0], infer_result['flat_params'][1], 'o',
1323: color="#A60628", markersize=6) # the MAP estimate
1324: >>> plt.colorbar(c)
1325: >>> plt.xlabel(r'$\alpha$ scale', fontsize=20, labelpad=10)
1326: >>> plt.ylabel(r'$\beta$', fontsize=20, labelpad=10)
1327: >>> plt.show()
1328: """
+1329: infer_result_loc = infer_result.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_infer_result_loc = __pyx_t_1; __pyx_t_1 = 0;
1330: # backwards compatibility
+1331: if 'flat_map' in infer_result_loc:
__pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_flat_map, __pyx_v_infer_result_loc, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1331, __pyx_L1_error) __pyx_t_5 = (__pyx_t_4 != 0); if (__pyx_t_5) { /* … */ }
+1332: infer_result_loc['flat_params'] = infer_result_loc.pop('flat_map')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result_loc, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_n_u_flat_map) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_flat_map); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params, __pyx_t_1) < 0)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1333:
+1334: flat_maps = infer_result_loc['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_flat_maps = __pyx_t_1; __pyx_t_1 = 0;
+1335: if resolution_2 == None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_resolution_2, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_5) { /* … */ }
+1336: resolution_2 = resolution_1
__Pyx_INCREF(__pyx_v_resolution_1); __Pyx_DECREF_SET(__pyx_v_resolution_2, __pyx_v_resolution_1);
+1337: def bilinear(param_1, param_2, det=True):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10robustness_1bilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_10robustness_1bilinear = {"bilinear", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_10robustness_1bilinear, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10robustness_1bilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_1 = 0;
PyObject *__pyx_v_param_2 = 0;
PyObject *__pyx_v_det = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("bilinear (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_1,&__pyx_n_s_param_2,&__pyx_n_s_det,0};
PyObject* values[3] = {0,0,0};
values[2] = ((PyObject *)((PyObject *)Py_True));
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_1)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("bilinear", 0, 2, 3, 1); __PYX_ERR(0, 1337, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "bilinear") < 0)) __PYX_ERR(0, 1337, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_1 = values[0];
__pyx_v_param_2 = values[1];
__pyx_v_det = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("bilinear", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1337, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.robustness.bilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10robustness_bilinear(__pyx_self, __pyx_v_param_1, __pyx_v_param_2, __pyx_v_det);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10robustness_bilinear(PyObject *__pyx_self, PyObject *__pyx_v_param_1, PyObject *__pyx_v_param_2, PyObject *__pyx_v_det) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *__pyx_outer_scope;
PyObject *__pyx_v_maps_temp = NULL;
PyObject *__pyx_v_dev = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("bilinear", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_robustness *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type.robustness.bilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_maps_temp);
__Pyx_XDECREF(__pyx_v_dev);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__17 = PyTuple_Pack(5, __pyx_n_s_param_1, __pyx_n_s_param_2, __pyx_n_s_det, __pyx_n_s_maps_temp, __pyx_n_s_dev); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 1337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__17);
__Pyx_GIVEREF(__pyx_tuple__17);
__pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_bilinear, 1337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 1337, __pyx_L1_error)
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_10robustness_1bilinear, 0, __pyx_n_s_robustness_locals_bilinear, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__19);
__pyx_v_bilinear = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_tuple__19 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1337, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__19);
__Pyx_GIVEREF(__pyx_tuple__19);
+1338: maps_temp = np.copy(flat_maps)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps)) { __Pyx_RaiseClosureNameError("flat_maps"); __PYX_ERR(0, 1338, __pyx_L1_error) } __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_cur_scope->__pyx_v_flat_maps) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_flat_maps); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_maps_temp = __pyx_t_1; __pyx_t_1 = 0;
+1339: maps_temp[param_pos_1] += param_1
if (unlikely(!__pyx_cur_scope->__pyx_v_param_pos_1)) { __Pyx_RaiseClosureNameError("param_pos_1"); __PYX_ERR(0, 1339, __pyx_L1_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_pos_1);
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_pos_1;
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_maps_temp, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1339, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_v_param_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1339, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(PyObject_SetItem(__pyx_v_maps_temp, __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1339, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1340: maps_temp[param_pos_2] += param_2
if (unlikely(!__pyx_cur_scope->__pyx_v_param_pos_2)) { __Pyx_RaiseClosureNameError("param_pos_2"); __PYX_ERR(0, 1340, __pyx_L1_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_pos_2);
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_pos_2;
__pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_maps_temp, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_v_param_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1340, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(PyObject_SetItem(__pyx_v_maps_temp, __pyx_t_1, __pyx_t_3) < 0)) __PYX_ERR(0, 1340, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1341: dev = maps_temp - flat_maps
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps)) { __Pyx_RaiseClosureNameError("flat_maps"); __PYX_ERR(0, 1341, __pyx_L1_error) }
__pyx_t_1 = PyNumber_Subtract(__pyx_v_maps_temp, __pyx_cur_scope->__pyx_v_flat_maps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_dev = __pyx_t_1;
__pyx_t_1 = 0;
+1342: if det:
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_det); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1342, __pyx_L1_error) if (__pyx_t_4) { /* … */ }
+1343: return -dev@FIM_det@dev
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyNumber_Negative(__pyx_v_dev); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(!__pyx_cur_scope->__pyx_v_FIM_det)) { __Pyx_RaiseClosureNameError("FIM_det"); __PYX_ERR(0, 1343, __pyx_L1_error) } __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_FIM_det); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_v_dev); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1344: else:
+1345: return -dev@FIM@dev
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyNumber_Negative(__pyx_v_dev); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_FIM)) { __Pyx_RaiseClosureNameError("FIM"); __PYX_ERR(0, 1345, __pyx_L1_error) }
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_FIM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1345, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_v_dev); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
}
+1346: param_1_range = np.linspace(-range_1, range_1, resolution_1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Negative(__pyx_v_range_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_2, __pyx_v_range_1, __pyx_v_resolution_1}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_2, __pyx_v_range_1, __pyx_v_resolution_1}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2); __Pyx_INCREF(__pyx_v_range_1); __Pyx_GIVEREF(__pyx_v_range_1); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_range_1); __Pyx_INCREF(__pyx_v_resolution_1); __Pyx_GIVEREF(__pyx_v_resolution_1); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_resolution_1); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_param_1_range = __pyx_t_1; __pyx_t_1 = 0;
+1347: param_2_range = np.linspace(-range_2, range_2, resolution_2)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_v_range_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_3, __pyx_v_range_2, __pyx_v_resolution_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_3, __pyx_v_range_2, __pyx_v_resolution_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_3); __Pyx_INCREF(__pyx_v_range_2); __Pyx_GIVEREF(__pyx_v_range_2); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_range_2); __Pyx_INCREF(__pyx_v_resolution_2); __Pyx_GIVEREF(__pyx_v_resolution_2); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_7, __pyx_v_resolution_2); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_param_2_range = __pyx_t_1; __pyx_t_1 = 0;
+1348: ff, ss = np.meshgrid(flat_maps[param_pos_1] + param_1_range,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_meshgrid); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_flat_maps, __pyx_cur_scope->__pyx_v_param_pos_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_v_param_1_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* … */ __pyx_v_ff = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_ss = __pyx_t_9; __pyx_t_9 = 0;
+1349: flat_maps[param_pos_2] + param_2_range)
__pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_flat_maps, __pyx_cur_scope->__pyx_v_param_pos_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_v_param_2_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_t_2); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1348, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_10(__pyx_t_2); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_9 = __pyx_t_10(__pyx_t_2); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_2), 2) < 0) __PYX_ERR(0, 1348, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1348, __pyx_L1_error) __pyx_L6_unpacking_done:; }
+1350: Z_sto = np.zeros((len(param_1_range), len(param_2_range)))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = PyObject_Length(__pyx_v_param_1_range); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1350, __pyx_L1_error) __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = PyObject_Length(__pyx_v_param_2_range); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1350, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_Z_sto = __pyx_t_1; __pyx_t_1 = 0;
+1351: Z_det = np.zeros((len(param_1_range), len(param_2_range)))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_11 = PyObject_Length(__pyx_v_param_1_range); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1351, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PyObject_Length(__pyx_v_param_2_range); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1351, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); __pyx_t_6 = 0; __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_Z_det = __pyx_t_1; __pyx_t_1 = 0;
+1352: i_k = 0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_i_k = __pyx_int_0;
+1353: for i in param_1_range:
if (likely(PyList_CheckExact(__pyx_v_param_1_range)) || PyTuple_CheckExact(__pyx_v_param_1_range)) { __pyx_t_1 = __pyx_v_param_1_range; __Pyx_INCREF(__pyx_t_1); __pyx_t_11 = 0; __pyx_t_12 = NULL; } else { __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_param_1_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1353, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1353, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1353, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_12(__pyx_t_1); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1353, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1354: j_k = 0
__Pyx_INCREF(__pyx_int_0); __Pyx_XDECREF_SET(__pyx_v_j_k, __pyx_int_0);
+1355: for j in param_2_range:
if (likely(PyList_CheckExact(__pyx_v_param_2_range)) || PyTuple_CheckExact(__pyx_v_param_2_range)) { __pyx_t_3 = __pyx_v_param_2_range; __Pyx_INCREF(__pyx_t_3); __pyx_t_13 = 0; __pyx_t_14 = NULL; } else { __pyx_t_13 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_param_2_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1355, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_14)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1355, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1355, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } } else { __pyx_t_9 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1355, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_9); } __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_9); __pyx_t_9 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1356: Z_det[i_k,j_k] = bilinear(i,j,det=True)
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_j); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_det, Py_True) < 0) __PYX_ERR(0, 1356, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_v_bilinear, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i_k); __Pyx_GIVEREF(__pyx_v_i_k); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i_k); __Pyx_INCREF(__pyx_v_j_k); __Pyx_GIVEREF(__pyx_v_j_k); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_j_k); if (unlikely(PyObject_SetItem(__pyx_v_Z_det, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 1356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1357: Z_sto[i_k,j_k] = bilinear(i,j,det=False)
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_j); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_det, Py_False) < 0) __PYX_ERR(0, 1357, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_v_bilinear, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i_k); __Pyx_GIVEREF(__pyx_v_i_k); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i_k); __Pyx_INCREF(__pyx_v_j_k); __Pyx_GIVEREF(__pyx_v_j_k); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_j_k); if (unlikely(PyObject_SetItem(__pyx_v_Z_sto, __pyx_t_2, __pyx_t_9) < 0)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1358: j_k += 1
__pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_j_k, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF_SET(__pyx_v_j_k, __pyx_t_9); __pyx_t_9 = 0;
+1359: i_k += 1
__pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i_k, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_i_k, __pyx_t_3); __pyx_t_3 = 0;
+1360: return ff, ss, Z_sto, Z_det
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_ff); __Pyx_GIVEREF(__pyx_v_ff); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_ff); __Pyx_INCREF(__pyx_v_ss); __Pyx_GIVEREF(__pyx_v_ss); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ss); __Pyx_INCREF(__pyx_v_Z_sto); __Pyx_GIVEREF(__pyx_v_Z_sto); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_Z_sto); __Pyx_INCREF(__pyx_v_Z_det); __Pyx_GIVEREF(__pyx_v_Z_det); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_Z_det); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1361:
+1362: def sensitivity(self, FIM):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_45sensitivity(PyObject *__pyx_v_self, PyObject *__pyx_v_FIM); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_44sensitivity[] = "\n Computes sensitivity measures (not normalised) for\n 1) each individual parameter: from the diagonal elements of the FIM\n 2) incorporating parametric interactions: from the standard deviations derived from the FIM\n More on these interpretations can be found here: https://doi.org/10.1529/biophysj.104.053405\n A larger entry translates into greater anticipated model sensitivity to changes in the parameter of interest.\n\n Parameters\n ----------\n FIM: 2d numpy.array\n The Fisher Information Matrix\n\n Returns\n -------\n sensitivity_individual: numpy.array\n Sensitivity measure for individual parameters.\n sensitivity_correlated: numpy.array\n Sensitivity measure incorporating parametric interactions.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_45sensitivity(PyObject *__pyx_v_self, PyObject *__pyx_v_FIM) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sensitivity (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_44sensitivity(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_FIM));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_44sensitivity(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_FIM) {
PyObject *__pyx_v_sensitivity_individual = NULL;
PyObject *__pyx_v_sensitivity_correlated = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sensitivity", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.sensitivity", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_sensitivity_individual);
__Pyx_XDECREF(__pyx_v_sensitivity_correlated);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1363: """
1364: Computes sensitivity measures (not normalised) for
1365: 1) each individual parameter: from the diagonal elements of the FIM
1366: 2) incorporating parametric interactions: from the standard deviations derived from the FIM
1367: More on these interpretations can be found here: https://doi.org/10.1529/biophysj.104.053405
1368: A larger entry translates into greater anticipated model sensitivity to changes in the parameter of interest.
1369:
1370: Parameters
1371: ----------
1372: FIM: 2d numpy.array
1373: The Fisher Information Matrix
1374:
1375: Returns
1376: -------
1377: sensitivity_individual: numpy.array
1378: Sensitivity measure for individual parameters.
1379: sensitivity_correlated: numpy.array
1380: Sensitivity measure incorporating parametric interactions.
1381: """
+1382: if not np.all(np.linalg.eigvalsh(FIM)>0):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_all); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_linalg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_eigvalsh); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_FIM) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_FIM); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = ((!__pyx_t_6) != 0); if (unlikely(__pyx_t_7)) { /* … */ }
+1383: raise Exception("FIM not positive definite - check for appropriate step-size `eps` in FIM computation and/or increase `inter_steps` for a more stable result")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 1383, __pyx_L1_error) /* … */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_FIM_not_positive_definite_check); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20);
1384:
+1385: sensitivity_individual = np.sqrt(np.diagonal(FIM))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_diagonal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_FIM) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_FIM); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_sensitivity_individual = __pyx_t_1; __pyx_t_1 = 0;
+1386: sensitivity_correlated = np.divide(1, np.sqrt(np.diagonal(np.linalg.inv(FIM))))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_divide); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_diagonal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_linalg); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_inv); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_v_FIM) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_FIM); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_12 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_12 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_12, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_12, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_sensitivity_correlated = __pyx_t_1; __pyx_t_1 = 0;
1387:
+1388: return sensitivity_individual, sensitivity_correlated
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_sensitivity_individual); __Pyx_GIVEREF(__pyx_v_sensitivity_individual); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_sensitivity_individual); __Pyx_INCREF(__pyx_v_sensitivity_correlated); __Pyx_GIVEREF(__pyx_v_sensitivity_correlated); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sensitivity_correlated); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1389:
+1390: def sample_gaussian(self, N, map_estimate, cov, x, Tf, contactMatrix, prior_dict, tangent=False):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_47sample_gaussian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_46sample_gaussian[] = "\n Sample `N` samples of the parameters from the Gaussian centered at the MAP estimate with specified\n covariance `cov`.\n\n Parameters\n ----------\n N: int\n The number of samples.\n map_estimate: dict\n The MAP estimate, e.g. as computed by `inference.infer_parameters`.\n cov: np.array\n The covariance matrix of the flat parameters.\n x: np.array\n The full trajectory.\n Tf: float\n The total time of the trajectory.\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n prior_dict: dict\n A dictionary containing priors. See examples.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n\n Returns\n -------\n samples: list of dict\n N samples of the Gaussian distribution.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_47sample_gaussian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_map_estimate = 0;
PyObject *__pyx_v_cov = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_prior_dict = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_gaussian (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_N,&__pyx_n_s_map_estimate,&__pyx_n_s_cov_2,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_prior_dict,&__pyx_n_s_tangent,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[7] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_map_estimate)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 1); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cov_2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 2); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 3); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 4); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 5); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_dict)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, 6); __PYX_ERR(0, 1390, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sample_gaussian") < 0)) __PYX_ERR(0, 1390, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_N = values[0];
__pyx_v_map_estimate = values[1];
__pyx_v_cov = values[2];
__pyx_v_x = values[3];
__pyx_v_Tf = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_prior_dict = values[6];
__pyx_v_tangent = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("sample_gaussian", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1390, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_gaussian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_46sample_gaussian(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_N, __pyx_v_map_estimate, __pyx_v_cov, __pyx_v_x, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_prior_dict, __pyx_v_tangent);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_46sample_gaussian(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_N, PyObject *__pyx_v_map_estimate, PyObject *__pyx_v_cov, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_prior_dict, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_loglike_args = NULL;
PyObject *__pyx_v_mean = NULL;
PyObject *__pyx_v_sample_parameters = NULL;
PyObject *__pyx_v_samples = NULL;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_new_sample = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_gaussian", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_gaussian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_loglike_args);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_sample_parameters);
__Pyx_XDECREF(__pyx_v_samples);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_new_sample);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1391: """
1392: Sample `N` samples of the parameters from the Gaussian centered at the MAP estimate with specified
1393: covariance `cov`.
1394:
1395: Parameters
1396: ----------
1397: N: int
1398: The number of samples.
1399: map_estimate: dict
1400: The MAP estimate, e.g. as computed by `inference.infer_parameters`.
1401: cov: np.array
1402: The covariance matrix of the flat parameters.
1403: x: np.array
1404: The full trajectory.
1405: Tf: float
1406: The total time of the trajectory.
1407: contactMatrix: callable
1408: A function that returns the contact matrix at time t (input).
1409: prior_dict: dict
1410: A dictionary containing priors. See examples.
1411: tangent: bool, optional
1412: Set to True to use tangent space inference. Default is False.
1413:
1414: Returns
1415: -------
1416: samples: list of dict
1417: N samples of the Gaussian distribution.
1418: """
+1419: prior_names, keys, guess, stds, _, _, bounds, flat_guess_range, is_scale_parameter, scaled_guesses \
__pyx_v_prior_names = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_v_keys = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_stds = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v__ = __pyx_t_6;
__pyx_t_6 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_7);
__pyx_t_7 = 0;
__pyx_v_bounds = __pyx_t_8;
__pyx_t_8 = 0;
__pyx_v_flat_guess_range = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v_is_scale_parameter = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_scaled_guesses = __pyx_t_11;
__pyx_t_11 = 0;
+1420: = pyross.utils.parse_param_prior_dict(prior_dict, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_v_prior_dict); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_prior_dict); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_check_length, __pyx_t_4) < 0) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1419, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_5 = PyList_GET_ITEM(sequence, 3); __pyx_t_6 = PyList_GET_ITEM(sequence, 4); __pyx_t_7 = PyList_GET_ITEM(sequence, 5); __pyx_t_8 = PyList_GET_ITEM(sequence, 6); __pyx_t_9 = PyList_GET_ITEM(sequence, 7); __pyx_t_10 = PyList_GET_ITEM(sequence, 8); __pyx_t_11 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_1,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1419, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_1,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; __pyx_t_12 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_13(__pyx_t_12); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 10) < 0) __PYX_ERR(0, 1419, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1419, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+1421: prior = Prior(prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_Prior); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; __pyx_t_14 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_14 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1421, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_prior_names, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1421, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_9 = PyTuple_New(4+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_prior_names); __Pyx_GIVEREF(__pyx_v_prior_names); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_14, __pyx_v_prior_names); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_14, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_14, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_14, __pyx_v_stds); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_prior = __pyx_t_4; __pyx_t_4 = 0;
+1422: loglike_args = {'keys':keys, 'is_scale_parameter':is_scale_parameter,
__pyx_t_4 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 1422, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 1422, __pyx_L1_error)
+1423: 'scaled_guesses':scaled_guesses, 'flat_guess_range':flat_guess_range,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 1422, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 1422, __pyx_L1_error)
+1424: 'x':x, 'Tf':Tf, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_x, __pyx_v_x) < 0) __PYX_ERR(0, 1422, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 1422, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1422, __pyx_L1_error) __pyx_v_loglike_args = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
1425:
1426: # Sample the flat parameters.
+1427: mean = map_estimate['flat_map']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_map_estimate, __pyx_n_u_flat_map); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_mean = __pyx_t_4; __pyx_t_4 = 0;
+1428: sample_parameters = np.random.multivariate_normal(mean, cov, N)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_random); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_14 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_14 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_mean, __pyx_v_cov, __pyx_v_N}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 3+__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_mean, __pyx_v_cov, __pyx_v_N}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 3+__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_10 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_14, __pyx_v_mean); __Pyx_INCREF(__pyx_v_cov); __Pyx_GIVEREF(__pyx_v_cov); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_14, __pyx_v_cov); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_14, __pyx_v_N); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_sample_parameters = __pyx_t_4; __pyx_t_4 = 0;
1429:
+1430: samples = []
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_samples = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+1431: for sample in sample_parameters:
if (likely(PyList_CheckExact(__pyx_v_sample_parameters)) || PyTuple_CheckExact(__pyx_v_sample_parameters)) { __pyx_t_4 = __pyx_v_sample_parameters; __Pyx_INCREF(__pyx_t_4); __pyx_t_15 = 0; __pyx_t_16 = NULL; } else { __pyx_t_15 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_sample_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1431, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_16)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_11); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1431, __pyx_L1_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif } else { if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_11); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1431, __pyx_L1_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif } } else { __pyx_t_11 = __pyx_t_16(__pyx_t_4); if (unlikely(!__pyx_t_11)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1431, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_11); } __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_11); __pyx_t_11 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1432: new_sample = map_estimate.copy()
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_map_estimate, __pyx_n_s_copy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_11 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_new_sample, __pyx_t_11); __pyx_t_11 = 0;
+1433: new_sample['flat_params'] = sample
if (unlikely(PyObject_SetItem(__pyx_v_new_sample, __pyx_n_u_flat_params, __pyx_v_sample) < 0)) __PYX_ERR(0, 1433, __pyx_L1_error)
+1434: new_sample['map_dict'] = \
if (unlikely(PyObject_SetItem(__pyx_v_new_sample, __pyx_n_u_map_dict, __pyx_t_11) < 0)) __PYX_ERR(0, 1434, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1435: pyross.utils.unflatten_parameters(sample, map_estimate['flat_guess_range'],
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pyross); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Dict_GetItem(__pyx_v_map_estimate, __pyx_n_u_flat_guess_range); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9);
+1436: map_estimate['is_scale_parameter'], map_estimate['scaled_guesses'])
__pyx_t_8 = __Pyx_PyObject_Dict_GetItem(__pyx_v_map_estimate, __pyx_n_u_is_scale_parameter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_map_estimate, __pyx_n_u_scaled_guesses); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = NULL; __pyx_t_14 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_14 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_sample, __pyx_t_9, __pyx_t_8, __pyx_t_7}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_sample, __pyx_t_9, __pyx_t_8, __pyx_t_7}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_sample); __Pyx_GIVEREF(__pyx_v_sample); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_14, __pyx_v_sample); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_14, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_14, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_14, __pyx_t_7); __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1437: l_like = self._loglike(sample, **loglike_args)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglike); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_sample); __Pyx_GIVEREF(__pyx_v_sample); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_sample); __pyx_t_5 = PyDict_Copy(__pyx_v_loglike_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_l_like, __pyx_t_7); __pyx_t_7 = 0;
+1438: l_prior = np.sum(prior.logpdf(sample))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_8, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_7 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_l_prior, __pyx_t_7); __pyx_t_7 = 0;
+1439: l_post = l_like + l_prior
__pyx_t_7 = PyNumber_Add(__pyx_v_l_like, __pyx_v_l_prior); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_7); __pyx_t_7 = 0;
+1440: new_sample['log_posterior'] = l_post
if (unlikely(PyObject_SetItem(__pyx_v_new_sample, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0)) __PYX_ERR(0, 1440, __pyx_L1_error)
+1441: new_sample['log_prior'] = l_prior
if (unlikely(PyObject_SetItem(__pyx_v_new_sample, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0)) __PYX_ERR(0, 1441, __pyx_L1_error)
+1442: new_sample['log_likelihood'] = l_like
if (unlikely(PyObject_SetItem(__pyx_v_new_sample, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0)) __PYX_ERR(0, 1442, __pyx_L1_error)
+1443: samples.append(new_sample)
__pyx_t_17 = __Pyx_PyList_Append(__pyx_v_samples, __pyx_v_new_sample); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 1443, __pyx_L1_error)
1444:
+1445: return samples
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_samples); __pyx_r = __pyx_v_samples; goto __pyx_L0;
1446:
+1447: def evidence_laplace(self, x, Tf, infer_result, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_49evidence_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_48evidence_laplace[] = "\n Compute the evidence using a Laplace approximation at the MAP estimate.\n\n Parameters\n ----------\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. \n If not specified, \n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),\n "" infer_result['log_likelihood'])**(0.25) \n\n is used. For `fd_method=\"central\"` it is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\". Default is \"central\".\n inter_steps: int, optional\n Only used if `tangent=False`. Intermediate steps for interpolation between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration. \n We have found that forward Euler is generally slower, but more stable for derivatives with respect \n to parameters than the variable step size integrators used elsewhere in pyross. Default is 10.\n\n Returns\n -------\n log_evidence: float\n The log-evidence computed via Laplace approximation at the MAP estimate.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_49evidence_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("evidence_laplace (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_fd_method,&__pyx_n_s_inter_steps,0};
PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_48evidence_laplace(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_fd_method, PyObject *__pyx_v_inter_steps) {
PyObject *__pyx_v_logP_MAPs = NULL;
PyObject *__pyx_v_A = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("evidence_laplace", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.evidence_laplace", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_logP_MAPs);
__Pyx_XDECREF(__pyx_v_A);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1448: generator=None,
values[4] = ((PyObject *)Py_None);
+1449: intervention_fun=None, tangent=False, eps=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)__pyx_n_u_central);
values[9] = ((PyObject *)__pyx_int_10);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("evidence_laplace", 0, 3, 10, 1); __PYX_ERR(0, 1447, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("evidence_laplace", 0, 3, 10, 2); __PYX_ERR(0, 1447, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "evidence_laplace") < 0)) __PYX_ERR(0, 1447, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_Tf = values[1];
__pyx_v_infer_result = values[2];
__pyx_v_contactMatrix = values[3];
__pyx_v_generator = values[4];
__pyx_v_intervention_fun = values[5];
__pyx_v_tangent = values[6];
__pyx_v_eps = values[7];
__pyx_v_fd_method = values[8];
__pyx_v_inter_steps = values[9];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("evidence_laplace", 0, 3, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1447, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.evidence_laplace", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_48evidence_laplace(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps);
1450: fd_method="central", inter_steps=10):
1451: """
1452: Compute the evidence using a Laplace approximation at the MAP estimate.
1453:
1454: Parameters
1455: ----------
1456: x: 2d numpy.array
1457: Observed trajectory (number of data points x (age groups * model classes))
1458: Tf: float
1459: Total time of the trajectory
1460: infer_result: dict
1461: Dictionary returned by latent_infer
1462: contactMatrix: callable, optional
1463: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
1464: Either a contactMatrix or a generator must be specified.
1465: generator: pyross.contactMatrix, optional
1466: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
1467: parameters.
1468: Either a contactMatrix or a generator must be specified.
1469: intervention_fun: callable, optional
1470: The calling signature is `intervention_func(t, **kwargs)`,
1471: where t is time and kwargs are other keyword arguments for the function.
1472: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
1473: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
1474: If not set, assume intervention that's constant in time.
1475: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
1476: tangent: bool, optional
1477: Set to True to use tangent space inference. Default is False.
1478: eps: float or numpy.array, optional
1479: Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
1480: If not specified,
1481:
1482: .. code-block:: python
1483:
1484: eps = 100*infer_result['flat_params']
1485: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
1486: infer_result['log_likelihood'])**(0.25)
1487:
1488: is used. For `fd_method="central"` it is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.
1489: fd_method: str, optional
1490: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central". Default is "central".
1491: inter_steps: int, optional
1492: Only used if `tangent=False`. Intermediate steps for interpolation between observations for the deterministic forward Euler integration.
1493: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
1494: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
1495: We have found that forward Euler is generally slower, but more stable for derivatives with respect
1496: to parameters than the variable step size integrators used elsewhere in pyross. Default is 10.
1497:
1498: Returns
1499: -------
1500: log_evidence: float
1501: The log-evidence computed via Laplace approximation at the MAP estimate.
1502: """
1503:
1504:
+1505: logP_MAPs = infer_result['log_posterior']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_log_posterior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_logP_MAPs = __pyx_t_1; __pyx_t_1 = 0;
+1506: A = self.hessian(x, Tf, infer_result, contactMatrix, generator,
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_hessian); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
1507: intervention_fun, tangent, eps,
+1508: fd_method, inter_steps)
__pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[11] = {__pyx_t_3, __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 10+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1506, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[11] = {__pyx_t_3, __pyx_v_x, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 10+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1506, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(10+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_infer_result); __Pyx_GIVEREF(__pyx_v_infer_result); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_infer_result); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_intervention_fun); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_eps); __Pyx_INCREF(__pyx_v_fd_method); __Pyx_GIVEREF(__pyx_v_fd_method); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_fd_method); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_inter_steps); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_A = __pyx_t_1; __pyx_t_1 = 0;
+1509: k = A.shape[0]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_A, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_k = __pyx_t_2; __pyx_t_2 = 0;
1510:
+1511: return logP_MAPs - 0.5*np.log(np.linalg.det(A)) + 0.5*k*np.log(2*np.pi)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linalg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_det); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_v_A) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_A); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Subtract(__pyx_v_logP_MAPs, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1512:
1513:
+1514: def obtain_minus_log_p(self, parameters, np.ndarray x, double Tf, contactMatrix, tangent=False):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_51obtain_minus_log_p(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_50obtain_minus_log_p[] = "Computes -logp of a full trajectory\n Parameters\n ----------\n parameters: dict\n A dictionary for the model parameters.\n x: np.array\n The full trajectory.\n Tf: float\n The time duration of the trajectory.\n contactMatrix: callable\n A function that takes time (t) as an argument and returns the contactMatrix\n tangent: bool, optional\n Set to True to use tangent space inference.\n\n Returns\n -------\n minus_logp: float\n Value of -logp\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_51obtain_minus_log_p(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyArrayObject *__pyx_v_x = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_minus_log_p (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,0};
PyObject* values[5] = {0,0,0,0,0};
values[4] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 4, 5, 1); __PYX_ERR(0, 1514, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 4, 5, 2); __PYX_ERR(0, 1514, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 4, 5, 3); __PYX_ERR(0, 1514, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[4] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_minus_log_p") < 0)) __PYX_ERR(0, 1514, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_x = ((PyArrayObject *)values[1]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L3_error)
__pyx_v_contactMatrix = values[3];
__pyx_v_tangent = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1514, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_minus_log_p", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 1514, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_50obtain_minus_log_p(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_x, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_tangent);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_50obtain_minus_log_p(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, PyArrayObject *__pyx_v_x, double __pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent) {
__Pyx_memviewslice __pyx_v_x_memview = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_minus_logp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_minus_log_p", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_minus_log_p", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x_memview, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1515: """Computes -logp of a full trajectory
1516: Parameters
1517: ----------
1518: parameters: dict
1519: A dictionary for the model parameters.
1520: x: np.array
1521: The full trajectory.
1522: Tf: float
1523: The time duration of the trajectory.
1524: contactMatrix: callable
1525: A function that takes time (t) as an argument and returns the contactMatrix
1526: tangent: bool, optional
1527: Set to True to use tangent space inference.
1528:
1529: Returns
1530: -------
1531: minus_logp: float
1532: Value of -logp
1533: """
1534:
1535: cdef:
1536: double minus_log_p
+1537: double [:, :] x_memview=x.astype('float')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_n_u_float) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_float); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 1537, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_x_memview = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+1538: self.set_params(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1539: self.contactMatrix = contactMatrix
__Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_v_contactMatrix;
+1540: if tangent:
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1540, __pyx_L1_error) if (__pyx_t_5) { /* … */ goto __pyx_L3; }
+1541: minus_logp = self._obtain_logp_for_traj_tangent(x_memview, Tf)
__pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_traj_tangent(__pyx_v_self, __pyx_v_x_memview, __pyx_v_Tf);
1542: else:
+1543: minus_logp = self._obtain_logp_for_traj(x_memview, Tf)
/*else*/ {
__pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_traj(__pyx_v_self, __pyx_v_x_memview, __pyx_v_Tf, NULL);
}
__pyx_L3:;
+1544: return minus_logp
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_minus_logp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1545:
+1546: cdef np.ndarray _get_r_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_8SIR_type__get_r_from_x(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_r_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SIR_type._get_r_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1547: # this function will be overridden in case of extra (non-additive) compartments
1548: cdef:
1549: np.ndarray r
+1550: r = self.fi - np.sum(x.reshape((int(self.dim/self.M), self.M)), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->dim / __pyx_v_self->M)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 1550, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(((PyObject *)__pyx_v_self->fi), __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1550, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1551: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
1552:
+1553: cdef double _penalty_from_negative_values(self, np.ndarray x0):
static double __pyx_f_6pyross_9inference_8SIR_type__penalty_from_negative_values(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_x0) {
double __pyx_v_eps;
double __pyx_v_dev;
PyArrayObject *__pyx_v_R_init = 0;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_penalty_from_negative_values", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._penalty_from_negative_values", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_R_init);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1554: cdef:
+1555: double eps=0.1/self.Omega, dev
__pyx_v_eps = (0.1 / __pyx_v_self->Omega);
1556: np.ndarray R_init
+1557: R_init = self._get_r_from_x(x0)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_get_r_from_x(__pyx_v_self, __pyx_v_x0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_R_init = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1558: dev = - (np.sum(R_init[R_init<0]) + np.sum(x0[x0<0]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_R_init), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1558, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_R_init), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_x0), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1558, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x0), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1558, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_dev = __pyx_t_6;
+1559: return (dev/eps)**2 + (dev/eps)**8
__pyx_r = (pow((__pyx_v_dev / __pyx_v_eps), 2.0) + pow((__pyx_v_dev / __pyx_v_eps), 8.0)); goto __pyx_L0;
1560:
+1561: def _all_positive(self, np.ndarray x0):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_53_all_positive(PyObject *__pyx_v_self, PyObject *__pyx_v_x0); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_53_all_positive(PyObject *__pyx_v_self, PyObject *__pyx_v_x0) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_all_positive (wrapper)", 0);
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x0), __pyx_ptype_5numpy_ndarray, 1, "x0", 0))) __PYX_ERR(0, 1561, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_52_all_positive(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyArrayObject *)__pyx_v_x0));
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_52_all_positive(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_x0) {
PyArrayObject *__pyx_v_r = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_all_positive", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type._all_positive", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1562: r = self._get_r_from_x(x0)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_get_r_from_x(__pyx_v_self, __pyx_v_x0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1563: return (x0>0).all() and (r>0).all()
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_x0), __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1563, __pyx_L1_error) if (__pyx_t_5) { __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3_bool_binop_done; } __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_r), __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1563, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_all); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1564:
+1565: def latent_infer_parameters(self, np.ndarray obs, np.ndarray fltr, double Tf,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_55latent_infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_54latent_infer_parameters[] = "\n Compute the maximum a-posteriori (MAP) estimate of the parameters and the initial conditions of a SIR type model\n when the classes are only partially observed. Unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n see `latent_infer`\n\n Returns\n -------\n output: dict\n Contains the following keys for users:\n\n map_params_dict: dict\n A dictionary for the MAP estimates for parameter values.\n The keys are the names of the parameters.\n map_x0: np.array\n The MAP estimate for the initial conditions.\n -logp: float\n The value of -logp at MAP.\n\n Note\n ----\n This function just calls latent_infer (with fixed `contactMatrix`), will be deprecated.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_55latent_infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters (wrapper)", 0);
__pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, 1); __PYX_ERR(0, 1565, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, 2); __PYX_ERR(0, 1565, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, 3); __PYX_ERR(0, 1565, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, 4); __PYX_ERR(0, 1565, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, 5); __PYX_ERR(0, 1565, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "latent_infer_parameters") < 0)) __PYX_ERR(0, 1565, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1565, __pyx_L3_error)
__pyx_v_contactMatrix = values[3];
__pyx_v_param_priors = values[4];
__pyx_v_init_priors = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1565, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1565, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1565, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_54latent_infer_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_54latent_infer_parameters(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_kwargs) {
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1566: contactMatrix, param_priors, init_priors, **kwargs):
1567: """
1568: Compute the maximum a-posteriori (MAP) estimate of the parameters and the initial conditions of a SIR type model
1569: when the classes are only partially observed. Unobserved classes are treated as latent variables.
1570:
1571: Parameters
1572: ----------
1573: see `latent_infer`
1574:
1575: Returns
1576: -------
1577: output: dict
1578: Contains the following keys for users:
1579:
1580: map_params_dict: dict
1581: A dictionary for the MAP estimates for parameter values.
1582: The keys are the names of the parameters.
1583: map_x0: np.array
1584: The MAP estimate for the initial conditions.
1585: -logp: float
1586: The value of -logp at MAP.
1587:
1588: Note
1589: ----
1590: This function just calls latent_infer (with fixed `contactMatrix`), will be deprecated.
1591: """
1592:
+1593: output_dict = self.latent_infer(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix, generator=None,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_obs)); __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_init_priors); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1593, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 1593, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_output_dict = __pyx_t_4; __pyx_t_4 = 0;
+1594: intervention_fun=None, **kwargs)
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 1593, __pyx_L1_error) __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0; if (__Pyx_MergeKeywords(__pyx_t_2, __pyx_v_kwargs) < 0) __PYX_ERR(0, 1594, __pyx_L1_error)
1595:
1596: # rename for backwards compatibility
+1597: output_dict['map_x0'] = output_dict['x0']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_x0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_map_x0, __pyx_t_4) < 0)) __PYX_ERR(0, 1597, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1598: output_dict['flat_map'] = output_dict['flat_params']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_flat_map, __pyx_t_4) < 0)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1599: output_dict['map_params_dict'] = output_dict['params_dict']
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_map_params_dict, __pyx_t_4) < 0)) __PYX_ERR(0, 1599, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1600:
+1601: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
1602:
1603:
+1604: def nested_sampling_latent_inference(self, np.ndarray obs, np.ndarray fltr, double Tf, contactMatrix, param_priors,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_57nested_sampling_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_56nested_sampling_latent_inference[] = "\n Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model\n with latent variables using nested sampling as implemented in the `dynesty` Python package.\n\n Note\n ----\n This function has been replaced by `pyross.inference.latent_infer_nested_sampling` and will be deleted\n in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_57nested_sampling_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_maxiter = 0;
PyObject *__pyx_v_maxcall = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_n_effective = 0;
PyObject *__pyx_v_add_live = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_dynesty_args = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference (wrapper)", 0);
__pyx_v_dynesty_args = PyDict_New(); if (unlikely(!__pyx_v_dynesty_args)) return NULL;
__Pyx_GOTREF(__pyx_v_dynesty_args);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_nprocesses,&__pyx_n_s_queue_size,&__pyx_n_s_maxiter,&__pyx_n_s_maxcall,&__pyx_n_s_dlogz,&__pyx_n_s_n_effective,&__pyx_n_s_add_live,&__pyx_n_s_sampler,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dynesty_args);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_56nested_sampling_latent_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_maxiter, PyObject *__pyx_v_maxcall, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_n_effective, PyObject *__pyx_v_add_live, PyObject *__pyx_v_sampler, PyObject *__pyx_v_dynesty_args) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1605: init_priors,tangent=False, verbose=False, nprocesses=0, queue_size=None,
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)__pyx_int_0);
values[9] = ((PyObject *)Py_None);
+1606: maxiter=None, maxcall=None, dlogz=None, n_effective=None, add_live=True,
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_True);
+1607: sampler=None, **dynesty_args):
values[15] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, 1); __PYX_ERR(0, 1604, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, 2); __PYX_ERR(0, 1604, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, 3); __PYX_ERR(0, 1604, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, 4); __PYX_ERR(0, 1604, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, 5); __PYX_ERR(0, 1604, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxiter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxcall);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_effective);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_add_live);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_dynesty_args, values, pos_args, "nested_sampling_latent_inference") < 0)) __PYX_ERR(0, 1604, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1604, __pyx_L3_error)
__pyx_v_contactMatrix = values[3];
__pyx_v_param_priors = values[4];
__pyx_v_init_priors = values[5];
__pyx_v_tangent = values[6];
__pyx_v_verbose = values[7];
__pyx_v_nprocesses = values[8];
__pyx_v_queue_size = values[9];
__pyx_v_maxiter = values[10];
__pyx_v_maxcall = values[11];
__pyx_v_dlogz = values[12];
__pyx_v_n_effective = values[13];
__pyx_v_add_live = values[14];
__pyx_v_sampler = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 6, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1604, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_dynesty_args); __pyx_v_dynesty_args = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1604, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1604, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_56nested_sampling_latent_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_nprocesses, __pyx_v_queue_size, __pyx_v_maxiter, __pyx_v_maxcall, __pyx_v_dlogz, __pyx_v_n_effective, __pyx_v_add_live, __pyx_v_sampler, __pyx_v_dynesty_args);
1608: """
1609: Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model
1610: with latent variables using nested sampling as implemented in the `dynesty` Python package.
1611:
1612: Note
1613: ----
1614: This function has been replaced by `pyross.inference.latent_infer_nested_sampling` and will be deleted
1615: in a future version of pyross. See there for a documentation of the function parameters.
1616: """
+1617: return self.latent_infer_nested_sampling(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_nested_sampling); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_obs)); __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_init_priors); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+1618: generator=None, intervention_fun=None, tangent=tangent, verbose=verbose,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 1617, __pyx_L1_error)
+1619: nprocesses=nprocesses, queue_size=queue_size, maxiter=maxiter, maxcall=maxcall,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_queue_size, __pyx_v_queue_size) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxiter, __pyx_v_maxiter) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_maxcall, __pyx_v_maxcall) < 0) __PYX_ERR(0, 1617, __pyx_L1_error)
+1620: dlogz=dlogz, n_effective=n_effective, add_live=add_live, sampler=sampler,
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dlogz, __pyx_v_dlogz) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_n_effective, __pyx_v_n_effective) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_add_live, __pyx_v_add_live) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_sampler, __pyx_v_sampler) < 0) __PYX_ERR(0, 1617, __pyx_L1_error) __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0;
+1621: **dynesty_args )
if (__Pyx_MergeKeywords(__pyx_t_2, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 1621, __pyx_L1_error)
1622:
+1623: def nested_sampling_latent_inference_process_result(self, sampler, obs, fltr, param_priors, init_priors):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_59nested_sampling_latent_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_58nested_sampling_latent_inference_process_result[] = "\n Take the sampler generated by `nested_sampling_latent_inference` and produce output dictionaries for further use\n in the pyross framework.\n\n Note\n ----\n This function has been replaced by `pyross.inference.latent_infer_nested_sampling_process_result` and will be\n deleted in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_59nested_sampling_latent_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference_process_result (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference_process_result", 1, 5, 5, 1); __PYX_ERR(0, 1623, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference_process_result", 1, 5, 5, 2); __PYX_ERR(0, 1623, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference_process_result", 1, 5, 5, 3); __PYX_ERR(0, 1623, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference_process_result", 1, 5, 5, 4); __PYX_ERR(0, 1623, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nested_sampling_latent_inference_process_result") < 0)) __PYX_ERR(0, 1623, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_sampler = values[0];
__pyx_v_obs = values[1];
__pyx_v_fltr = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference_process_result", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1623, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_58nested_sampling_latent_inference_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_obs, __pyx_v_fltr, __pyx_v_param_priors, __pyx_v_init_priors);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_58nested_sampling_latent_inference_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors) {
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_out_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_out_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1624: """
1625: Take the sampler generated by `nested_sampling_latent_inference` and produce output dictionaries for further use
1626: in the pyross framework.
1627:
1628: Note
1629: ----
1630: This function has been replaced by `pyross.inference.latent_infer_nested_sampling_process_result` and will be
1631: deleted in a future version of pyross. See there for a documentation of the function parameters.
1632: """
+1633: result, output_samples = self.latent_infer_nested_sampling_process_result(sampler, obs, fltr, param_priors, init_priors,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_nested_sampling_pro); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sampler); __Pyx_GIVEREF(__pyx_v_sampler); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sampler); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_init_priors); /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1633, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_5(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1633, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1633, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_result = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_output_samples = __pyx_t_2; __pyx_t_2 = 0;
+1634: contactMatrix=self.contactMatrix)
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_contactMatrix, __pyx_v_self->contactMatrix) < 0) __PYX_ERR(0, 1634, __pyx_L1_error)
1635:
1636: # Match old dictionary key names for backward compatibility.
+1637: for out_dict in output_samples:
if (likely(PyList_CheckExact(__pyx_v_output_samples)) || PyTuple_CheckExact(__pyx_v_output_samples)) { __pyx_t_4 = __pyx_v_output_samples; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_output_samples); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1637, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1637, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_7(__pyx_t_4); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1637, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_out_dict, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1638: out_dict['map_x0'] = out_dict.pop('x0')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_x0) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_x0); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_x0, __pyx_t_2) < 0)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1639: out_dict['flat_map'] = out_dict.pop('flat_params')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_flat_params) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_flat_params); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_map, __pyx_t_2) < 0)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1640: out_dict['map_params_dict'] = out_dict.pop('params_dict')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_n_u_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_params_dict); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_params_dict, __pyx_t_2) < 0)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1641:
+1642: return result, output_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_result); __Pyx_INCREF(__pyx_v_output_samples); __Pyx_GIVEREF(__pyx_v_output_samples); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_output_samples); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
1643:
1644:
+1645: def mcmc_latent_inference(self, np.ndarray obs, np.ndarray fltr, double Tf, contactMatrix, param_priors,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_61mcmc_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_60mcmc_latent_inference[] = "\n Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.\n\n Note\n ----\n This function has been replaced by `pyross.inference.latent_infer_mcmc` and will be deleted\n in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_61mcmc_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_nwalkers = 0;
PyObject *__pyx_v_walker_pos = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_latent_inference (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_sampler,&__pyx_n_s_nwalkers,&__pyx_n_s_walker_pos,&__pyx_n_s_nsamples,&__pyx_n_s_nprocesses,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_60mcmc_latent_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_sampler, PyObject *__pyx_v_nwalkers, PyObject *__pyx_v_walker_pos, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_latent_inference", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1646: init_priors, tangent=False, verbose=False, sampler=None, nwalkers=None, walker_pos=None,
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)__pyx_int_1000);
values[12] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, 1); __PYX_ERR(0, 1645, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, 2); __PYX_ERR(0, 1645, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, 3); __PYX_ERR(0, 1645, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, 4); __PYX_ERR(0, 1645, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, 5); __PYX_ERR(0, 1645, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nwalkers);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_walker_pos);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mcmc_latent_inference") < 0)) __PYX_ERR(0, 1645, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1645, __pyx_L3_error)
__pyx_v_contactMatrix = values[3];
__pyx_v_param_priors = values[4];
__pyx_v_init_priors = values[5];
__pyx_v_tangent = values[6];
__pyx_v_verbose = values[7];
__pyx_v_sampler = values[8];
__pyx_v_nwalkers = values[9];
__pyx_v_walker_pos = values[10];
__pyx_v_nsamples = values[11];
__pyx_v_nprocesses = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference", 0, 6, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1645, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1645, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1645, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_60mcmc_latent_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_sampler, __pyx_v_nwalkers, __pyx_v_walker_pos, __pyx_v_nsamples, __pyx_v_nprocesses);
1647: nsamples=1000, nprocesses=0):
1648: """
1649: Sample the posterior distribution of the epidemiological parameters using ensemble MCMC.
1650:
1651: Note
1652: ----
1653: This function has been replaced by `pyross.inference.latent_infer_mcmc` and will be deleted
1654: in a future version of pyross. See there for a documentation of the function parameters.
1655: """
+1656: return self.latent_infer_mcmc(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_mcmc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_obs)); __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_init_priors); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+1657: generator=None, intervention_fun=None, tangent=tangent, verbose=verbose,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_generator, Py_None) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_intervention_fun, Py_None) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 1656, __pyx_L1_error)
+1658: sampler=sampler, nwalkers=nwalkers, walker_pos=walker_pos,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_sampler, __pyx_v_sampler) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nwalkers, __pyx_v_nwalkers) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_walker_pos, __pyx_v_walker_pos) < 0) __PYX_ERR(0, 1656, __pyx_L1_error)
+1659: nsamples=nsamples, nprocesses=nprocesses)
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsamples, __pyx_v_nsamples) < 0) __PYX_ERR(0, 1656, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 1656, __pyx_L1_error)
1660:
+1661: def mcmc_latent_inference_process_result(self, sampler, obs, fltr, param_priors, init_priors,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_63mcmc_latent_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_62mcmc_latent_inference_process_result[] = "\n Take the sampler generated by `mcmc_latent_inference` and produce output dictionaries for further use\n in the pyross framework.\n\n Note\n ----\n This function has been replaced by `pyross.inference.latent_infer_mcmc_process_results` and will be deleted\n in a future version of pyross. See there for a documentation of the function parameters.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_63mcmc_latent_inference_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_flat = 0;
PyObject *__pyx_v_discard = 0;
PyObject *__pyx_v_thin = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_latent_inference_process_result (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_flat,&__pyx_n_s_discard,&__pyx_n_s_thin,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_62mcmc_latent_inference_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_flat, PyObject *__pyx_v_discard, PyObject *__pyx_v_thin) {
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_flat_sample_list = NULL;
PyObject *__pyx_v_out_dict = NULL;
PyObject *__pyx_8genexpr2__pyx_v_sublist = NULL;
PyObject *__pyx_8genexpr2__pyx_v_item = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mcmc_latent_inference_process_result", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_latent_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_flat_sample_list);
__Pyx_XDECREF(__pyx_v_out_dict);
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_sublist);
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_item);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1662: flat=True, discard=0, thin=1):
values[5] = ((PyObject *)Py_True);
values[6] = ((PyObject *)__pyx_int_0);
values[7] = ((PyObject *)__pyx_int_1);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference_process_result", 0, 5, 8, 1); __PYX_ERR(0, 1661, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference_process_result", 0, 5, 8, 2); __PYX_ERR(0, 1661, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference_process_result", 0, 5, 8, 3); __PYX_ERR(0, 1661, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference_process_result", 0, 5, 8, 4); __PYX_ERR(0, 1661, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_discard);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thin);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mcmc_latent_inference_process_result") < 0)) __PYX_ERR(0, 1661, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_obs = values[1];
__pyx_v_fltr = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_flat = values[5];
__pyx_v_discard = values[6];
__pyx_v_thin = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("mcmc_latent_inference_process_result", 0, 5, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1661, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.mcmc_latent_inference_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_62mcmc_latent_inference_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_obs, __pyx_v_fltr, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_flat, __pyx_v_discard, __pyx_v_thin);
1663: """
1664: Take the sampler generated by `mcmc_latent_inference` and produce output dictionaries for further use
1665: in the pyross framework.
1666:
1667: Note
1668: ----
1669: This function has been replaced by `pyross.inference.latent_infer_mcmc_process_results` and will be deleted
1670: in a future version of pyross. See there for a documentation of the function parameters.
1671: """
+1672: output_samples = self.latent_infer_mcmc_process_result(sampler, obs, fltr, param_priors, init_priors,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_mcmc_process_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sampler); __Pyx_GIVEREF(__pyx_v_sampler); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sampler); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_init_priors); /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_output_samples = __pyx_t_4; __pyx_t_4 = 0;
+1673: contactMatrix=self.contactMatrix, flat=flat,
__pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_contactMatrix, __pyx_v_self->contactMatrix) < 0) __PYX_ERR(0, 1673, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 1673, __pyx_L1_error)
+1674: discard=discard, thin=thin)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 1673, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 1673, __pyx_L1_error)
1675:
1676: # Match old dictionary key names for backward compatibility.
+1677: if flat:
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1677, __pyx_L1_error) if (__pyx_t_5) { /* … */ goto __pyx_L3; }
+1678: flat_sample_list = output_samples
__Pyx_INCREF(__pyx_v_output_samples);
__pyx_v_flat_sample_list = __pyx_v_output_samples;
1679: else:
+1680: flat_sample_list = [item for sublist in output_samples for item in sublist]
/*else*/ {
{ /* enter inner scope */
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_4);
if (likely(PyList_CheckExact(__pyx_v_output_samples)) || PyTuple_CheckExact(__pyx_v_output_samples)) {
__pyx_t_3 = __pyx_v_output_samples; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
} else {
__pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_output_samples); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1680, __pyx_L6_error)
}
for (;;) {
if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1680, __pyx_L6_error)
#else
__pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
} else {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1680, __pyx_L6_error)
#else
__pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
}
} else {
__pyx_t_2 = __pyx_t_7(__pyx_t_3);
if (unlikely(!__pyx_t_2)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 1680, __pyx_L6_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_sublist, __pyx_t_2);
__pyx_t_2 = 0;
if (likely(PyList_CheckExact(__pyx_8genexpr2__pyx_v_sublist)) || PyTuple_CheckExact(__pyx_8genexpr2__pyx_v_sublist)) {
__pyx_t_2 = __pyx_8genexpr2__pyx_v_sublist; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
__pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_8genexpr2__pyx_v_sublist); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1680, __pyx_L6_error)
}
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_2))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1680, __pyx_L6_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1680, __pyx_L6_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1680, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
__pyx_t_1 = __pyx_t_9(__pyx_t_2);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 1680, __pyx_L6_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_item, __pyx_t_1);
__pyx_t_1 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_8genexpr2__pyx_v_item))) __PYX_ERR(0, 1680, __pyx_L6_error)
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_item); __pyx_8genexpr2__pyx_v_item = 0;
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_sublist); __pyx_8genexpr2__pyx_v_sublist = 0;
goto __pyx_L11_exit_scope;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_item); __pyx_8genexpr2__pyx_v_item = 0;
__Pyx_XDECREF(__pyx_8genexpr2__pyx_v_sublist); __pyx_8genexpr2__pyx_v_sublist = 0;
goto __pyx_L1_error;
__pyx_L11_exit_scope:;
} /* exit inner scope */
__pyx_v_flat_sample_list = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_L3:;
+1681: for out_dict in flat_sample_list:
if (likely(PyList_CheckExact(__pyx_v_flat_sample_list)) || PyTuple_CheckExact(__pyx_v_flat_sample_list)) { __pyx_t_4 = __pyx_v_flat_sample_list; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_flat_sample_list); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1681, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1681, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1681, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_7(__pyx_t_4); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1681, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_out_dict, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1682: out_dict['map_x0'] = out_dict.pop('x0')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_x0) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_x0); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_x0, __pyx_t_3) < 0)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1683: out_dict['flat_map'] = out_dict.pop('flat_params')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_flat_params) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_flat_params); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_flat_map, __pyx_t_3) < 0)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1684: out_dict['map_params_dict'] = out_dict.pop('params_dict')
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_out_dict, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_n_u_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_n_u_params_dict); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_out_dict, __pyx_n_u_map_params_dict, __pyx_t_3) < 0)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
1685:
+1686: return output_samples
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_samples); __pyx_r = __pyx_v_output_samples; goto __pyx_L0;
1687:
1688:
+1689: def latent_infer_control(self, obs, fltr, Tf, generator, param_priors, init_priors,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_65latent_infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_64latent_infer_control[] = "\n Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in\n lockdown with partially observed classes.\n\n Parameters\n ----------\n see `latent_infer`\n\n Returns\n -------\n output_dict: dict\n A dictionary containing the following keys for users:\n\n map_params_dict: dict\n dictionary for MAP estimates for control parameters\n map_x0: np.array\n MAP estimates for the initial conditions\n -logp: float\n Value of -logp at MAP.\n\n Note\n ----\n This function just calls `latent_infer` (with the specified `generator`), will be deprecated.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_65latent_infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_control (wrapper)", 0);
__pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_generator,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, 1); __PYX_ERR(0, 1689, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, 2); __PYX_ERR(0, 1689, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, 3); __PYX_ERR(0, 1689, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, 4); __PYX_ERR(0, 1689, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, 5); __PYX_ERR(0, 1689, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "latent_infer_control") < 0)) __PYX_ERR(0, 1689, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_generator = values[3];
__pyx_v_param_priors = values[4];
__pyx_v_init_priors = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1689, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_64latent_infer_control(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_generator, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_64latent_infer_control(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_generator, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_kwargs) {
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_control", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1690: **kwargs):
1691: """
1692: Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in
1693: lockdown with partially observed classes.
1694:
1695: Parameters
1696: ----------
1697: see `latent_infer`
1698:
1699: Returns
1700: -------
1701: output_dict: dict
1702: A dictionary containing the following keys for users:
1703:
1704: map_params_dict: dict
1705: dictionary for MAP estimates for control parameters
1706: map_x0: np.array
1707: MAP estimates for the initial conditions
1708: -logp: float
1709: Value of -logp at MAP.
1710:
1711: Note
1712: ----
1713: This function just calls `latent_infer` (with the specified `generator`), will be deprecated.
1714: """
1715:
+1716: output_dict = self.latent_infer(obs, fltr, Tf, param_priors, init_priors,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_param_priors); __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_init_priors); /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_output_dict = __pyx_t_4; __pyx_t_4 = 0;
+1717: contactMatrix=None, generator=generator,
__pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, Py_None) < 0) __PYX_ERR(0, 1717, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 1717, __pyx_L1_error) __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0;
+1718: **kwargs)
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v_kwargs) < 0) __PYX_ERR(0, 1718, __pyx_L1_error)
+1719: del output_dict['params_dict']
if (unlikely(PyObject_DelItem(__pyx_v_output_dict, __pyx_n_u_params_dict) < 0)) __PYX_ERR(0, 1719, __pyx_L1_error)
+1720: output_dict['map_params_dict']=output_dict['control_params_dict'] # Rename entry for backwards compatibility
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(__pyx_v_output_dict, __pyx_n_u_map_params_dict, __pyx_t_4) < 0)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1721:
+1722: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
1723:
+1724: def _loglikelihood_latent(self, params, grad=0, generator=None, intervention_fun=None, param_keys=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_67_loglikelihood_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_67_loglikelihood_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_param_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_param_length = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_init_flags = 0;
PyObject *__pyx_v_init_fltrs = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_smooth_penalty = 0;
PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_objective = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_loglikelihood_latent (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_param_keys,&__pyx_n_s_param_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_param_length,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_obs0,&__pyx_n_s_init_flags,&__pyx_n_s_init_fltrs,&__pyx_n_s_tangent,&__pyx_n_s_smooth_penalty,&__pyx_n_s_bounds,&__pyx_n_s_inter_steps,&__pyx_n_s_objective,0};
PyObject* values[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_66_loglikelihood_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_param_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_param_length, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_obs0, PyObject *__pyx_v_init_flags, PyObject *__pyx_v_init_fltrs, PyObject *__pyx_v_tangent, PyObject *__pyx_v_smooth_penalty, PyObject *__pyx_v_bounds, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_objective, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_logl = NULL;
double __pyx_v_penalty;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_loglikelihood_latent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._loglikelihood_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_logl);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1725: param_guess_range=None, is_scale_parameter=None, scaled_param_guesses=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
+1726: param_length=None, obs=None, fltr=None, Tf=None, obs0=None, init_flags=None,
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
+1727: init_fltrs=None, tangent=None, smooth_penalty=False, bounds=None, inter_steps=0,
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
values[16] = ((PyObject *)Py_False);
values[17] = ((PyObject *)Py_None);
values[18] = ((PyObject *)__pyx_int_0);
values[19] = ((PyObject *)__pyx_n_u_likelihood);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_length);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_flags);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltrs);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_smooth_penalty);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objective);
if (value) { values[19] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "_loglikelihood_latent") < 0)) __PYX_ERR(0, 1724, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_param_keys = values[4];
__pyx_v_param_guess_range = values[5];
__pyx_v_is_scale_parameter = values[6];
__pyx_v_scaled_param_guesses = values[7];
__pyx_v_param_length = values[8];
__pyx_v_obs = values[9];
__pyx_v_fltr = values[10];
__pyx_v_Tf = values[11];
__pyx_v_obs0 = values[12];
__pyx_v_init_flags = values[13];
__pyx_v_init_fltrs = values[14];
__pyx_v_tangent = values[15];
__pyx_v_smooth_penalty = values[16];
__pyx_v_bounds = values[17];
__pyx_v_inter_steps = values[18];
__pyx_v_objective = values[19];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_loglikelihood_latent", 0, 1, 20, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1724, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._loglikelihood_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_66_loglikelihood_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_param_keys, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_param_length, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_obs0, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_tangent, __pyx_v_smooth_penalty, __pyx_v_bounds, __pyx_v_inter_steps, __pyx_v_objective, __pyx_v_catchall_kwargs);
1728: objective='likelihood', **catchall_kwargs):
+1729: if bounds is not None:
__pyx_t_1 = (__pyx_v_bounds != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
1730: # Check that params is within bounds. If not, return -np.inf.
+1731: if np.any(bounds[:,0] > params) or np.any(bounds[:,1] < params):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_any); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_params, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_any); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_params, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+1732: return -np.Inf
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Inf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
1733:
+1734: inits = np.copy(params[param_length:])
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_inits = __pyx_t_3; __pyx_t_3 = 0;
1735:
1736: # Restore parameters from flattened parameters
+1737: orig_params = pyross.utils.unflatten_parameters(params[:param_length],
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
+1738: param_guess_range, is_scale_parameter, scaled_param_guesses)
__pyx_t_5 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_6, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_6, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_v_scaled_param_guesses); __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_orig_params = __pyx_t_3; __pyx_t_3 = 0;
1739:
+1740: parameters, kwargs = self.fill_params_dict(param_keys, orig_params, return_additional_params=True)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_orig_params); __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 1740, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1740, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_4 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1740, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1740, __pyx_L1_error) __pyx_L8_unpacking_done:; } __pyx_v_parameters = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_kwargs = __pyx_t_4; __pyx_t_4 = 0;
1741:
+1742: self.set_params(parameters)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_8, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1743:
+1744: if generator is not None:
__pyx_t_2 = (__pyx_v_generator != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L9;
}
+1745: if intervention_fun is None:
__pyx_t_1 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L10;
}
+1746: self.contactMatrix = generator.constant_contactMatrix(**kwargs)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 1746, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_kwargs))) { __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { __pyx_t_4 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kwargs, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_8; __pyx_t_8 = 0;
1747: else:
+1748: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **kwargs)
/*else*/ {
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 1748, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_kwargs))) {
__pyx_t_6 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
} else {
__pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_kwargs, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L10:;
1749: else:
+1750: if kwargs != {}:
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1750, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = PyObject_RichCompare(__pyx_v_kwargs, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1750, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1750, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_t_2)) {
/* … */
}
}
__pyx_L9:;
+1751: raise Exception('Key error or unspecified generator')
__pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1751, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 1751, __pyx_L1_error)
1752:
+1753: x0 = self._construct_inits(inits, init_flags, init_fltrs, obs0, fltr[0])
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_v_inits, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_4}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_v_inits, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_4}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_inits); __Pyx_GIVEREF(__pyx_v_inits); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_inits); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_7, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_7, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_7, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x0 = __pyx_t_6; __pyx_t_6 = 0;
+1754: logl = 0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_logl = __pyx_int_0;
+1755: if smooth_penalty == True:
__pyx_t_6 = PyObject_RichCompare(__pyx_v_smooth_penalty, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1755, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1755, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_2) { /* … */ goto __pyx_L12; }
1756: # Steer the global optimiser away from regions with negative initial values.
+1757: penalty = self._penalty_from_negative_values(x0)
if (!(likely(((__pyx_v_x0) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x0, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1757, __pyx_L1_error) __pyx_v_penalty = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_penalty_from_negative_values(__pyx_v_self, ((PyArrayObject *)__pyx_v_x0));
+1758: x0[x0<0] = 0.1/self.Omega # set to be small and positive
__pyx_t_6 = PyFloat_FromDouble((0.1 / __pyx_v_self->Omega)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyObject_RichCompare(__pyx_v_x0, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1758, __pyx_L1_error) if (unlikely(PyObject_SetItem(__pyx_v_x0, __pyx_t_3, __pyx_t_6) < 0)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1759: logl -= penalty*fltr.shape[0]
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_penalty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fltr, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_v_logl, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_logl, __pyx_t_5); __pyx_t_5 = 0;
+1760: elif smooth_penalty == False:
__pyx_t_5 = PyObject_RichCompare(__pyx_v_smooth_penalty, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1760, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1760, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_2) { /* … */ } __pyx_L12:;
1761: # Return -Inf if one of the initial values is negative.
+1762: if not self._all_positive(x0):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_positive); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_v_x0) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_x0); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1762, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = ((!__pyx_t_2) != 0); if (__pyx_t_1) { /* … */ }
+1763: return -np.Inf
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Inf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
1764: # We also support `smooth_penalty == None`, which is useful for example for computing the Hessian.
1765:
+1766: if objective == 'likelihood':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_likelihood, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1766, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L14; }
+1767: logl += -self._obtain_logp_for_lat_traj(x0, obs, fltr[1:], Tf, tangent, inter_steps=inter_steps)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1767, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1767, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1767, __pyx_L1_error) __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1767, __pyx_L1_error) __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1767, __pyx_L1_error) __pyx_t_15.__pyx_n = 2; __pyx_t_15.tangent = __pyx_v_tangent; __pyx_t_15.inter_steps = __pyx_t_13; __pyx_t_14 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_lat_traj(__pyx_v_self, __pyx_t_10, __pyx_t_11, ((PyArrayObject *)__pyx_t_5), __pyx_t_12, &__pyx_t_15); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyFloat_FromDouble((-__pyx_t_14)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_logl, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_logl, __pyx_t_3); __pyx_t_3 = 0;
+1768: elif objective == 'least_squares':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_least_squares, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1768, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L14; }
+1769: logl += -self._obtain_square_dev_for_lat_traj(x0, obs, fltr[1:], Tf)
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1769, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1769, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1769, __pyx_L1_error) __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1769, __pyx_L1_error) __pyx_t_5 = PyFloat_FromDouble((-((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_square_dev_for_lat_traj(__pyx_v_self, __pyx_t_11, __pyx_t_10, ((PyArrayObject *)__pyx_t_3), __pyx_t_14))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_logl, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_logl, __pyx_t_3); __pyx_t_3 = 0;
+1770: elif objective == 'least_squares_diff':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_least_squares_diff, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1770, __pyx_L1_error) if (likely(__pyx_t_1)) { /* … */ goto __pyx_L14; }
+1771: logl += -self._obtain_square_dev_for_lat_traj_diff(x0, obs, fltr[1:], Tf)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1771, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1771, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1771, __pyx_L1_error) __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1771, __pyx_L1_error) __pyx_t_5 = PyFloat_FromDouble((-((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_square_dev_for_lat_traj_diff(__pyx_v_self, __pyx_t_10, __pyx_t_11, ((PyArrayObject *)__pyx_t_3), __pyx_t_14))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_logl, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_logl, __pyx_t_3); __pyx_t_3 = 0;
1772: else:
+1773: raise Exception('Unknown objective')
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 1773, __pyx_L1_error)
}
__pyx_L14:;
/* … */
__pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_Unknown_objective); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__21);
__Pyx_GIVEREF(__pyx_tuple__21);
1774:
+1775: return logl
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_logl); __pyx_r = __pyx_v_logl; goto __pyx_L0;
1776:
+1777: def _logposterior_latent(self, params, prior=None, verbose_likelihood=False,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_69_logposterior_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_69_logposterior_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_prior = 0;
PyObject *__pyx_v_verbose_likelihood = 0;
PyObject *__pyx_v_logl_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_logposterior_latent (wrapper)", 0);
__pyx_v_logl_kwargs = PyDict_New(); if (unlikely(!__pyx_v_logl_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_logl_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_prior,&__pyx_n_s_verbose_likelihood,0};
PyObject* values[3] = {0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose_likelihood);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_logl_kwargs, values, pos_args, "_logposterior_latent") < 0)) __PYX_ERR(0, 1777, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_prior = values[1];
__pyx_v_verbose_likelihood = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_logposterior_latent", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1777, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_logl_kwargs); __pyx_v_logl_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._logposterior_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_68_logposterior_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_prior, __pyx_v_verbose_likelihood, __pyx_v_logl_kwargs);
/* function exit code */
__Pyx_XDECREF(__pyx_v_logl_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_68_logposterior_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, PyObject *__pyx_v_prior, PyObject *__pyx_v_verbose_likelihood, PyObject *__pyx_v_logl_kwargs) {
PyObject *__pyx_v_logl = NULL;
PyObject *__pyx_v_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_logposterior_latent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type._logposterior_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_logl);
__Pyx_XDECREF(__pyx_v_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1778: **logl_kwargs):
+1779: logl = self._loglikelihood_latent(params, **logl_kwargs)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood_latent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_params); __pyx_t_3 = PyDict_Copy(__pyx_v_logl_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_logl = __pyx_t_4; __pyx_t_4 = 0;
+1780: logp = logl + np.sum(prior.logpdf(params))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v_params) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_params); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_v_logl, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_logp = __pyx_t_2; __pyx_t_2 = 0;
+1781: if verbose_likelihood:
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_verbose_likelihood); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1781, __pyx_L1_error) if (__pyx_t_6) { /* … */ }
+1782: print(logl,logp-logl,logp)
__pyx_t_2 = PyNumber_Subtract(__pyx_v_logp, __pyx_v_logl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_logl); __Pyx_GIVEREF(__pyx_v_logl); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_logl); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_INCREF(__pyx_v_logp); __Pyx_GIVEREF(__pyx_v_logp); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_logp); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1783: return logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_logp); __pyx_r = __pyx_v_logp; goto __pyx_L0;
1784:
+1785: def _latent_infer_to_minimize(self, params, grad=0,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_71_latent_infer_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_70_latent_infer_to_minimize[] = "Objective function for minimization call in latent_infer.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_71_latent_infer_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_logp_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_to_minimize (wrapper)", 0);
__pyx_v_logp_kwargs = PyDict_New(); if (unlikely(!__pyx_v_logp_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_logp_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,0};
PyObject* values[2] = {0,0};
values[1] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_logp_kwargs, values, pos_args, "_latent_infer_to_minimize") < 0)) __PYX_ERR(0, 1785, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_infer_to_minimize", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1785, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_logp_kwargs); __pyx_v_logp_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_70_latent_infer_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_logp_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_XDECREF(__pyx_v_logp_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_70_latent_infer_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_logp_kwargs) {
PyObject *__pyx_v_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1786: **logp_kwargs):
1787: """Objective function for minimization call in latent_infer."""
+1788: if 'disable_penalty' in logp_kwargs:
__pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_disable_penalty, __pyx_v_logp_kwargs, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1788, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+1789: logp = self._logposterior_latent(params, smooth_penalty=None, **logp_kwargs)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior_latent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_params); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_smooth_penalty, Py_None) < 0) __PYX_ERR(0, 1789, __pyx_L1_error) __pyx_t_5 = __pyx_t_6; __pyx_t_6 = 0; if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_logp_kwargs) < 0) __PYX_ERR(0, 1789, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_logp = __pyx_t_6; __pyx_t_6 = 0;
1790: else:
+1791: logp = self._logposterior_latent(params, smooth_penalty=True, **logp_kwargs)
/*else*/ {
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior_latent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1791, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1791, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_params);
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_smooth_penalty, Py_True) < 0) __PYX_ERR(0, 1791, __pyx_L1_error)
__pyx_t_4 = __pyx_t_3;
__pyx_t_3 = 0;
if (__Pyx_MergeKeywords(__pyx_t_4, __pyx_v_logp_kwargs) < 0) __PYX_ERR(0, 1791, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_logp = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L3:;
+1792: return -logp
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyNumber_Negative(__pyx_v_logp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
1793:
+1794: def latent_infer(self, np.ndarray obs, np.ndarray fltr, Tf, param_priors, init_priors,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_73latent_infer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_72latent_infer[] = "\n Compute the maximum a-posteriori (MAP) estimate for the initial conditions and all desired parameters, including control parameters,\n for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n Total time of the trajectory\n param_priors: dict\n A dictionary that specifies priors for parameters (including control parameters, if desired). See `infer` for further explanations.\n init_priors: dict\n A dictionary for priors for initial conditions. See below for examples\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is false"".\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: double\n Relative tolerance of logp\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n local_initital_step: optional, float or np.array\n Initial step size for the local optimiser. If scalar, relative to the initial guess. \n Default: Deterined by final state of global optimiser, or, if enable_global=False, 0.01\n global_atol: float\n The absolute tolerance for global minimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_random_seed: int (between 0 and 2**32-1)\n Random seed for the optimisation algorithms. By default it is generated from numpy.random.randint.\n objective: string, optional\n Objective for the minimisation. 'likelihood' (default), 'least_square' (least squares fit w.r.t. absolute compartment values), \n 'least_squares_diff' (least squares fit w.r.t. time-differences of compartment values)\n alternative_guess: np.array, optional\n Alternative initial quess, different form the mean of the prior. \n Array in the same format as 'flat_params' in the result dictionary of a previous optimisation run.\n use_mode_as_guess: bool, optional\n Initialise optimisation with mode instead of mean of the prior. Makes a difference for lognormal distributions. \n tmp_file: optional, stri""ng\n If specified, name of a file to store the temporary best estimate of the global optimiser (as backup or for inspection) as numpy array file \n load_backup_file: optional, string\n If specified, name of a file to restore the the state of the global optimiser\n\n Returns\n -------\n output_dict: dict\n A dictionary containing the following keys for users:\n\n x0: np.array\n MAP estimates for the initial conditions\n params_dict: dict\n dictionary for MAP estimates for model parameters\n control_params_dict: dict\n dictionary for MAP estimates for control parameters (if requested)\n -logp: float\n Value of -logp at MAP.\n\n Note\n ----\n This function combines the functionality of `latent_infer_parameters` and `latent_infer_control`,\n which will be deprecated.\n To infer model parameters only, specify a fixed `contactMatrix` function.\n To infer control parameters only, specify a `generator` and do not specify priors for model parameters.\n\n Examples\n --------\n Here we list three examples, one for inferring all initial conditions\n along the fastest growing linear mode, one for inferring the initial\n conditions individually and a mixed one.\n\n First, suppose we only observe Is out of (S, Ia, Is) and we wish to\n infer all compartmental values of S and Ia independently. For two age\n groups with population [2500, 7500],\n\n >>> init_priors = {\n 'independent':{\n 'fltr': [True, True, True, True, False, False],\n 'mean': [2400, 7400, 50, 50],\n 'std': [200, 200, 200, 200],\n 'bounds': [[2000, 2500], [7000, 7500], [0, 400], [0, 400]]\n }\n }\n\n In the 'fltr' entry, we need ""a boolean array indicating which components\n of the full x0 = [S0[0], S0[1], Ia0[0], Ia0[1], Is0[0], Ia0[1]] array we are inferring.\n By setting fltr = [True, True, True, True, False, False], the inference algorithm\n will know that we are inferring all components of S0 and Ia0 but not Is0.\n Similar to inference for parameter values, we also assume a log-normal\n distribution for the priors for the initial conditions.\n\n Next, if we are happy to assume that all our initial conditions lie\n along the fastest growing linear mode and we will only infer the\n coefficient of the mode, the init_priors dict would be,\n\n >>> init_priors = {\n 'lin_mode_coeff':{\n 'fltr': [True, True, True, True, False, False],\n 'mean': 100,\n 'std': 100,\n 'bounds': [1, 1000]\n }\n }\n\n Note that the 'fltr' entry is still the same as before because we still\n only want to infer S and Ia, and the initial conditions for Is is fixed\n by the observation.\n\n Finally, if we want to do a mixture of both (useful when some compartments\n have aligned with the fastest growing mode but others haven't), we need\n to set the init_priors to be,\n\n >>> init_priors = {\n 'lin_mode_coeff': {\n 'fltr': [True, True, False, False, False, False],\n 'mean': 100,\n 'std': 100,\n 'bounds': [1, 1000]\n },\n 'independent':{\n 'fltr': [False, False, True, True, False, False],\n 'mean': [50, 50],\n 'std': [200, 200],\n 'bounds': [0, 400], [0, 400]\n }\n }\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_73latent_infer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_verbose_likelihood = 0;
PyObject *__pyx_v_ftol = 0;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_local_initial_step = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_random_seed = 0;
PyObject *__pyx_v_objective = 0;
PyObject *__pyx_v_alternative_guess = 0;
PyObject *__pyx_v_use_mode_as_guess = 0;
PyObject *__pyx_v_tmp_file = 0;
PyObject *__pyx_v_load_backup_file = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_verbose_likelihood,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_local_initial_step,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_random_seed,&__pyx_n_s_objective,&__pyx_n_s_alternative_guess,&__pyx_n_s_use_mode_as_guess,&__pyx_n_s_tmp_file,&__pyx_n_s_load_backup_file,0};
PyObject* values[26] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_72latent_infer(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_verbose_likelihood, PyObject *__pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_local_initial_step, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_random_seed, PyObject *__pyx_v_objective, PyObject *__pyx_v_alternative_guess, PyObject *__pyx_v_use_mode_as_guess, PyObject *__pyx_v_tmp_file, PyObject *__pyx_v_load_backup_file) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_param_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_param_mean = NULL;
PyObject *__pyx_v_param_stds = NULL;
PyObject *__pyx_v_param_guess = NULL;
PyObject *__pyx_v_param_guess_std = NULL;
PyObject *__pyx_v_param_bounds = NULL;
PyObject *__pyx_v_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_prior_names = NULL;
PyObject *__pyx_v_init_mean = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_guess_std = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_param_length = NULL;
PyObject *__pyx_v_mean = NULL;
PyObject *__pyx_v_stds = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_guess_std = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_cma_stds = NULL;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_estimates = NULL;
PyObject *__pyx_v_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_init_estimates = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_map_x0 = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_param_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_param_mean);
__Pyx_XDECREF(__pyx_v_param_stds);
__Pyx_XDECREF(__pyx_v_param_guess);
__Pyx_XDECREF(__pyx_v_param_guess_std);
__Pyx_XDECREF(__pyx_v_param_bounds);
__Pyx_XDECREF(__pyx_v_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_prior_names);
__Pyx_XDECREF(__pyx_v_init_mean);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_guess_std);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_param_length);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_guess_std);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_cma_stds);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_estimates);
__Pyx_XDECREF(__pyx_v_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_init_estimates);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_map_x0);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1795: contactMatrix=None, generator=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+1796: intervention_fun=None, tangent=False,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
+1797: verbose=False, verbose_likelihood=False, ftol=1e-5, global_max_iter=100,
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_float_1eneg_5);
values[12] = ((PyObject *)__pyx_int_100);
values[13] = ((PyObject *)__pyx_int_100);
+1798: local_max_iter=100, local_initial_step=None, global_atol=1., enable_global=True,
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)__pyx_float_1_);
values[16] = ((PyObject *)Py_True);
+1799: enable_local=True, cma_processes=0, cma_population=16, cma_random_seed=None,
values[17] = ((PyObject *)Py_True);
values[18] = ((PyObject *)__pyx_int_0);
values[19] = ((PyObject *)__pyx_int_16);
values[20] = ((PyObject *)Py_None);
values[21] = ((PyObject *)__pyx_n_u_likelihood);
+1800: objective='likelihood', alternative_guess=None, use_mode_as_guess=False, tmp_file=None, load_backup_file=None):
values[22] = ((PyObject *)Py_None);
values[23] = ((PyObject *)Py_False);
values[24] = ((PyObject *)Py_None);
values[25] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 26: values[25] = PyTuple_GET_ITEM(__pyx_args, 25);
CYTHON_FALLTHROUGH;
case 25: values[24] = PyTuple_GET_ITEM(__pyx_args, 24);
CYTHON_FALLTHROUGH;
case 24: values[23] = PyTuple_GET_ITEM(__pyx_args, 23);
CYTHON_FALLTHROUGH;
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer", 0, 5, 26, 1); __PYX_ERR(0, 1794, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer", 0, 5, 26, 2); __PYX_ERR(0, 1794, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer", 0, 5, 26, 3); __PYX_ERR(0, 1794, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer", 0, 5, 26, 4); __PYX_ERR(0, 1794, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose_likelihood);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_initial_step);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_random_seed);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objective);
if (value) { values[21] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 22:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_alternative_guess);
if (value) { values[22] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 23:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_use_mode_as_guess);
if (value) { values[23] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 24:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tmp_file);
if (value) { values[24] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 25:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_load_backup_file);
if (value) { values[25] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_infer") < 0)) __PYX_ERR(0, 1794, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 26: values[25] = PyTuple_GET_ITEM(__pyx_args, 25);
CYTHON_FALLTHROUGH;
case 25: values[24] = PyTuple_GET_ITEM(__pyx_args, 24);
CYTHON_FALLTHROUGH;
case 24: values[23] = PyTuple_GET_ITEM(__pyx_args, 23);
CYTHON_FALLTHROUGH;
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_verbose = values[9];
__pyx_v_verbose_likelihood = values[10];
__pyx_v_ftol = values[11];
__pyx_v_global_max_iter = values[12];
__pyx_v_local_max_iter = values[13];
__pyx_v_local_initial_step = values[14];
__pyx_v_global_atol = values[15];
__pyx_v_enable_global = values[16];
__pyx_v_enable_local = values[17];
__pyx_v_cma_processes = values[18];
__pyx_v_cma_population = values[19];
__pyx_v_cma_random_seed = values[20];
__pyx_v_objective = values[21];
__pyx_v_alternative_guess = values[22];
__pyx_v_use_mode_as_guess = values[23];
__pyx_v_tmp_file = values[24];
__pyx_v_load_backup_file = values[25];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer", 0, 5, 26, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1794, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1794, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1794, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_72latent_infer(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_verbose_likelihood, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_local_initial_step, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_random_seed, __pyx_v_objective, __pyx_v_alternative_guess, __pyx_v_use_mode_as_guess, __pyx_v_tmp_file, __pyx_v_load_backup_file);
1801: """
1802: Compute the maximum a-posteriori (MAP) estimate for the initial conditions and all desired parameters, including control parameters,
1803: for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.
1804:
1805: Parameters
1806: ----------
1807: obs: np.array
1808: The partially observed trajectory.
1809: fltr: 2d np.array
1810: The filter for the observation such that
1811: :math:`F_{ij} x_j (t) = obs_i(t)`
1812: Tf: float
1813: Total time of the trajectory
1814: param_priors: dict
1815: A dictionary that specifies priors for parameters (including control parameters, if desired). See `infer` for further explanations.
1816: init_priors: dict
1817: A dictionary for priors for initial conditions. See below for examples
1818: contactMatrix: callable, optional
1819: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
1820: Either a contactMatrix or a generator must be specified.
1821: generator: pyross.contactMatrix, optional
1822: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
1823: parameters.
1824: Either a contactMatrix or a generator must be specified.
1825: intervention_fun: callable, optional
1826: The calling signature is `intervention_func(t, **kwargs)`,
1827: where t is time and kwargs are other keyword arguments for the function.
1828: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
1829: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
1830: If not set, assume intervention that's constant in time.
1831: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
1832: tangent: bool, optional
1833: Set to True to use tangent space inference. Default is false.
1834: verbose: bool, optional
1835: Set to True to see intermediate outputs from the optimizer.
1836: ftol: double
1837: Relative tolerance of logp
1838: global_max_iter: int, optional
1839: Number of global optimisations performed.
1840: local_max_iter: int, optional
1841: Number of local optimisation performed.
1842: local_initital_step: optional, float or np.array
1843: Initial step size for the local optimiser. If scalar, relative to the initial guess.
1844: Default: Deterined by final state of global optimiser, or, if enable_global=False, 0.01
1845: global_atol: float
1846: The absolute tolerance for global minimisation.
1847: enable_global: bool, optional
1848: Set to True to enable global optimisation.
1849: enable_local: bool, optional
1850: Set to True to enable local optimisation.
1851: cma_processes: int, optional
1852: Number of parallel processes used for global optimisation.
1853: cma_population: int, optional
1854: The number of samples used in each step of the CMA algorithm.
1855: cma_random_seed: int (between 0 and 2**32-1)
1856: Random seed for the optimisation algorithms. By default it is generated from numpy.random.randint.
1857: objective: string, optional
1858: Objective for the minimisation. 'likelihood' (default), 'least_square' (least squares fit w.r.t. absolute compartment values),
1859: 'least_squares_diff' (least squares fit w.r.t. time-differences of compartment values)
1860: alternative_guess: np.array, optional
1861: Alternative initial quess, different form the mean of the prior.
1862: Array in the same format as 'flat_params' in the result dictionary of a previous optimisation run.
1863: use_mode_as_guess: bool, optional
1864: Initialise optimisation with mode instead of mean of the prior. Makes a difference for lognormal distributions.
1865: tmp_file: optional, string
1866: If specified, name of a file to store the temporary best estimate of the global optimiser (as backup or for inspection) as numpy array file
1867: load_backup_file: optional, string
1868: If specified, name of a file to restore the the state of the global optimiser
1869:
1870: Returns
1871: -------
1872: output_dict: dict
1873: A dictionary containing the following keys for users:
1874:
1875: x0: np.array
1876: MAP estimates for the initial conditions
1877: params_dict: dict
1878: dictionary for MAP estimates for model parameters
1879: control_params_dict: dict
1880: dictionary for MAP estimates for control parameters (if requested)
1881: -logp: float
1882: Value of -logp at MAP.
1883:
1884: Note
1885: ----
1886: This function combines the functionality of `latent_infer_parameters` and `latent_infer_control`,
1887: which will be deprecated.
1888: To infer model parameters only, specify a fixed `contactMatrix` function.
1889: To infer control parameters only, specify a `generator` and do not specify priors for model parameters.
1890:
1891: Examples
1892: --------
1893: Here we list three examples, one for inferring all initial conditions
1894: along the fastest growing linear mode, one for inferring the initial
1895: conditions individually and a mixed one.
1896:
1897: First, suppose we only observe Is out of (S, Ia, Is) and we wish to
1898: infer all compartmental values of S and Ia independently. For two age
1899: groups with population [2500, 7500],
1900:
1901: >>> init_priors = {
1902: 'independent':{
1903: 'fltr': [True, True, True, True, False, False],
1904: 'mean': [2400, 7400, 50, 50],
1905: 'std': [200, 200, 200, 200],
1906: 'bounds': [[2000, 2500], [7000, 7500], [0, 400], [0, 400]]
1907: }
1908: }
1909:
1910: In the 'fltr' entry, we need a boolean array indicating which components
1911: of the full x0 = [S0[0], S0[1], Ia0[0], Ia0[1], Is0[0], Ia0[1]] array we are inferring.
1912: By setting fltr = [True, True, True, True, False, False], the inference algorithm
1913: will know that we are inferring all components of S0 and Ia0 but not Is0.
1914: Similar to inference for parameter values, we also assume a log-normal
1915: distribution for the priors for the initial conditions.
1916:
1917: Next, if we are happy to assume that all our initial conditions lie
1918: along the fastest growing linear mode and we will only infer the
1919: coefficient of the mode, the init_priors dict would be,
1920:
1921: >>> init_priors = {
1922: 'lin_mode_coeff':{
1923: 'fltr': [True, True, True, True, False, False],
1924: 'mean': 100,
1925: 'std': 100,
1926: 'bounds': [1, 1000]
1927: }
1928: }
1929:
1930: Note that the 'fltr' entry is still the same as before because we still
1931: only want to infer S and Ia, and the initial conditions for Is is fixed
1932: by the observation.
1933:
1934: Finally, if we want to do a mixture of both (useful when some compartments
1935: have aligned with the fastest growing mode but others haven't), we need
1936: to set the init_priors to be,
1937:
1938: >>> init_priors = {
1939: 'lin_mode_coeff': {
1940: 'fltr': [True, True, False, False, False, False],
1941: 'mean': 100,
1942: 'std': 100,
1943: 'bounds': [1, 1000]
1944: },
1945: 'independent':{
1946: 'fltr': [False, False, True, True, False, False],
1947: 'mean': [50, 50],
1948: 'std': [200, 200],
1949: 'bounds': [0, 400], [0, 400]
1950: }
1951: }
1952: """
1953:
1954: # Sanity checks of the inputs
+1955: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1956:
1957: # Process fltr and obs
+1958: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, ((PyObject *)__pyx_v_fltr)); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, ((PyObject *)__pyx_v_obs)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1958, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 1958, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1958, __pyx_L1_error) __pyx_L4_unpacking_done:; } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1958, __pyx_L1_error) if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1958, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
1959:
1960: # Read in parameter priors
+1961: param_prior_names, keys, param_mean, param_stds, param_guess, param_guess_std, param_bounds, param_guess_range, \
__pyx_v_param_prior_names = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_keys = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_param_mean = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_param_stds = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_param_guess = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_param_guess_std = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_param_bounds = __pyx_t_10; __pyx_t_10 = 0; __pyx_v_param_guess_range = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_is_scale_parameter = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_scaled_param_guesses = __pyx_t_13; __pyx_t_13 = 0;
1962: is_scale_parameter, scaled_param_guesses \
+1963: = pyross.utils.parse_param_prior_dict(param_priors, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_priors); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_check_length, __pyx_t_2) < 0) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1961, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); __pyx_t_10 = PyList_GET_ITEM(sequence, 6); __pyx_t_11 = PyList_GET_ITEM(sequence, 7); __pyx_t_12 = PyList_GET_ITEM(sequence, 8); __pyx_t_13 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1961, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; __pyx_t_14 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_14)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_7(__pyx_t_14); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_14), 10) < 0) __PYX_ERR(0, 1961, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1961, __pyx_L1_error) __pyx_L6_unpacking_done:; }
1964:
1965: # Read in initial conditions priors
+1966: init_prior_names, init_mean, init_stds, init_guess, init_guess_std, init_bounds, init_flags, init_fltrs \
__pyx_v_init_prior_names = __pyx_t_13; __pyx_t_13 = 0; __pyx_v_init_mean = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_init_stds = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_init_guess = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_init_guess_std = __pyx_t_10; __pyx_t_10 = 0; __pyx_v_init_bounds = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_init_flags = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_init_fltrs = __pyx_t_1; __pyx_t_1 = 0;
+1967: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pyross); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_utils); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_15 = PyObject_Length(__pyx_v_obs0); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1967, __pyx_L1_error) __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1966, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_13 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); __pyx_t_11 = PyList_GET_ITEM(sequence, 2); __pyx_t_12 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_6 = PyList_GET_ITEM(sequence, 6); __pyx_t_1 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1966, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_7(__pyx_t_3); if (unlikely(!item)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 8) < 0) __PYX_ERR(0, 1966, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1966, __pyx_L1_error) __pyx_L8_unpacking_done:; }
1968:
1969: # Concatenate the flattend parameter guess with init guess
+1970: param_length = param_guess.shape[0]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_guess, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_param_length = __pyx_t_1; __pyx_t_1 = 0;
+1971: mean = np.concatenate([param_mean, init_mean]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_mean); __Pyx_GIVEREF(__pyx_v_param_mean); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_mean); __Pyx_INCREF(__pyx_v_init_mean); __Pyx_GIVEREF(__pyx_v_init_mean); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_mean); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_mean = __pyx_t_1; __pyx_t_1 = 0;
+1972: stds = np.concatenate([param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_param_stds); __Pyx_GIVEREF(__pyx_v_param_stds); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_init_stds); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_stds = __pyx_t_1; __pyx_t_1 = 0;
+1973: if use_mode_as_guess:
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_use_mode_as_guess); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 1973, __pyx_L1_error) if (__pyx_t_16) { /* … */ goto __pyx_L9; }
+1974: guess = np.concatenate([param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_param_guess); __Pyx_GIVEREF(__pyx_v_param_guess); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_guess); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_guess = __pyx_t_1; __pyx_t_1 = 0;
+1975: guess_std = np.concatenate([param_guess_std,init_guess_std]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_guess_std); __Pyx_GIVEREF(__pyx_v_param_guess_std); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_guess_std); __Pyx_INCREF(__pyx_v_init_guess_std); __Pyx_GIVEREF(__pyx_v_init_guess_std); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_guess_std); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_guess_std = __pyx_t_1; __pyx_t_1 = 0;
1976: else:
+1977: guess = mean
/*else*/ {
__Pyx_INCREF(__pyx_v_mean);
__pyx_v_guess = __pyx_v_mean;
+1978: guess_std =stds
__Pyx_INCREF(__pyx_v_stds);
__pyx_v_guess_std = __pyx_v_stds;
}
__pyx_L9:;
1979:
+1980: bounds = np.concatenate([param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_param_bounds); __Pyx_GIVEREF(__pyx_v_param_bounds); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_bounds); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 1980, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
1981:
+1982: prior = Prior(param_prior_names+init_prior_names, bounds, mean, stds)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Prior); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = PyNumber_Add(__pyx_v_param_prior_names, __pyx_v_init_prior_names); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_10, __pyx_v_bounds, __pyx_v_mean, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_10, __pyx_v_bounds, __pyx_v_mean, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_2 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_4, __pyx_v_mean); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_prior = __pyx_t_1; __pyx_t_1 = 0;
1983:
+1984: cma_stds = np.minimum(guess_std, (bounds[:, 1]-bounds[:, 0])/3)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_minimum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_tuple__2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = PyNumber_Subtract(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_6, __pyx_int_3, 3, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_guess_std, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_guess_std, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_guess_std); __Pyx_GIVEREF(__pyx_v_guess_std); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_v_guess_std); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cma_stds = __pyx_t_1; __pyx_t_1 = 0;
1985:
+1986: if alternative_guess is not None:
__pyx_t_16 = (__pyx_v_alternative_guess != Py_None);
__pyx_t_17 = (__pyx_t_16 != 0);
if (__pyx_t_17) {
/* … */
}
+1987: guess = alternative_guess
__Pyx_INCREF(__pyx_v_alternative_guess); __Pyx_DECREF_SET(__pyx_v_guess, __pyx_v_alternative_guess);
1988:
+1989: minimize_args = {'generator':generator, 'intervention_fun':intervention_fun,
__pyx_t_1 = __Pyx_PyDict_NewPresized(17); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1990: 'param_keys':keys, 'param_guess_range':param_guess_range,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1991: 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1992: 'scaled_param_guesses':scaled_param_guesses,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1993: 'param_length':param_length,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1994: 'obs':obs, 'fltr':fltr, 'Tf':Tf, 'obs0':obs0,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs0, __pyx_v_obs0) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1995: 'init_flags':init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 1989, __pyx_L1_error)
+1996: 'prior':prior, 'tangent':tangent, 'objective':objective, 'verbose_likelihood':verbose_likelihood}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_objective, __pyx_v_objective) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_verbose_likelihood, __pyx_v_verbose_likelihood) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1997: res = minimization(self._latent_infer_to_minimize,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_minimization); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_to_minimize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_guess); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_bounds); __pyx_t_2 = 0; /* … */ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_res = __pyx_t_10; __pyx_t_10 = 0;
+1998: guess, bounds, ftol=ftol,
__pyx_t_2 = __Pyx_PyDict_NewPresized(15); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ftol, __pyx_v_ftol) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+1999: global_max_iter=global_max_iter,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2000: local_max_iter=local_max_iter, local_initial_step=local_initial_step, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_local_initial_step, __pyx_v_local_initial_step) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2001: enable_global=enable_global, enable_local=enable_local,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2002: cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2003: cma_population=cma_population, cma_stds=cma_stds,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cma_stds, __pyx_v_cma_stds) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2004: verbose=verbose, cma_random_seed=cma_random_seed,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cma_random_seed, __pyx_v_cma_random_seed) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2005: args_dict=minimize_args, tmp_file=tmp_file, load_backup_file=load_backup_file)
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_tmp_file, __pyx_v_tmp_file) < 0) __PYX_ERR(0, 1998, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_load_backup_file, __pyx_v_load_backup_file) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
+2006: estimates = res[0]
__pyx_t_10 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_estimates = __pyx_t_10; __pyx_t_10 = 0;
2007:
2008: # Get the parameters (in their original structure) from the flattened parameter vector.
+2009: param_estimates = estimates[:param_length]
__pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_param_estimates = __pyx_t_10; __pyx_t_10 = 0;
+2010: orig_params = pyross.utils.unflatten_parameters(param_estimates,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
2011: param_guess_range,
2012: is_scale_parameter,
+2013: scaled_param_guesses)
__pyx_t_8 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif { __pyx_t_1 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_param_estimates); __Pyx_GIVEREF(__pyx_v_param_estimates); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_v_param_estimates); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_4, __pyx_v_scaled_param_guesses); __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_orig_params = __pyx_t_10; __pyx_t_10 = 0;
+2014: init_estimates = estimates[param_length:]
__pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_init_estimates = __pyx_t_10; __pyx_t_10 = 0;
2015:
2016:
+2017: map_params_dict, map_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_orig_params); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 2017, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2017, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(0, 2017, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2017, __pyx_L1_error) __pyx_L12_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_map_control_params_dict = __pyx_t_2; __pyx_t_2 = 0;
+2018: self.set_params(map_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
2019:
+2020: if generator is not None:
__pyx_t_17 = (__pyx_v_generator != Py_None);
__pyx_t_16 = (__pyx_t_17 != 0);
if (__pyx_t_16) {
/* … */
}
+2021: if intervention_fun is None:
__pyx_t_16 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_17 = (__pyx_t_16 != 0);
if (__pyx_t_17) {
/* … */
goto __pyx_L14;
}
+2022: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 2022, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_2 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { __pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_1; __pyx_t_1 = 0;
2023: else:
+2024: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2024, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_8 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
} else {
__pyx_t_8 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2024, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_GIVEREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_10;
__pyx_t_10 = 0;
}
__pyx_L14:;
+2025: map_x0 = self._construct_inits(init_estimates, init_flags, init_fltrs,
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8);
+2026: obs0, fltr[0])
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[6] = {__pyx_t_1, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_2}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[6] = {__pyx_t_1, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_2}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_6 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_INCREF(__pyx_v_init_estimates); __Pyx_GIVEREF(__pyx_v_init_estimates); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_init_estimates); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_4, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_4, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_4, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_map_x0 = __pyx_t_10; __pyx_t_10 = 0;
+2027: l_post = -res[1]
__pyx_t_10 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_l_post = __pyx_t_8; __pyx_t_8 = 0;
+2028: l_prior = np.sum(prior.logpdf(res[0]))
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_l_prior = __pyx_t_8; __pyx_t_8 = 0;
+2029: l_like = l_post - l_prior
__pyx_t_8 = PyNumber_Subtract(__pyx_v_l_post, __pyx_v_l_prior); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_v_l_like = __pyx_t_8; __pyx_t_8 = 0;
2030: output_dict = {
+2031: 'params_dict':map_params_dict, 'x0':map_x0, 'flat_params':estimates,
__pyx_t_8 = __Pyx_PyDict_NewPresized(14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_params_dict, __pyx_v_map_params_dict) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_x0, __pyx_v_map_x0) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_flat_params, __pyx_v_estimates) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2032: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2033: 'param_keys': keys, 'param_guess_range': param_guess_range,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2034: 'is_scale_parameter':is_scale_parameter, 'param_length':param_length,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2035: 'scaled_param_guesses':scaled_param_guesses,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2036: 'init_flags': init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 2031, __pyx_L1_error)
+2037: 'prior': prior,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 2031, __pyx_L1_error) __pyx_v_output_dict = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
2038: }
+2039: if map_control_params_dict != {}:
__pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyObject_RichCompare(__pyx_v_map_control_params_dict, __pyx_t_8, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2039, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_17 < 0)) __PYX_ERR(0, 2039, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_17) { /* … */ }
+2040: output_dict['control_params_dict'] = map_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_map_control_params_dict) < 0)) __PYX_ERR(0, 2040, __pyx_L1_error)
2041:
+2042: return output_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_dict); __pyx_r = __pyx_v_output_dict; goto __pyx_L0;
2043:
+2044: def latent_infer_nested_sampling(self, np.ndarray obs, np.ndarray fltr, Tf, param_priors, init_priors, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_75latent_infer_nested_sampling(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_74latent_infer_nested_sampling[] = "\n Compute the log-evidence and weighted samples for the initial conditions and all desired parameters, including control parameters,\n for a SIR type model with partially observed classes. This function uses nested sampling as implemented in the `dynesty` Python package.\n\n Parameters\n ----------\n obs: 2d numpy.array\n The observed trajectories with reduced number of variables\n (number of data points, (age groups * observed model classes))\n fltr: 2d numpy.array\n A matrix of shape (no. observed variables, no. total variables),\n such that obs_{ti} = fltr_{ij} * X_{tj}\n Tf: float\n Total time of the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n param_priors: dict\n A dictionary for priors for the model parameters.\n See `latent_infer` for further explanations.\n init_priors: dict\n A dictionary for priors for the initial conditions.\n See `latent_infer` for further explanations.\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij}"" aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n verbose: bool, optional\n Set to True to see intermediate outputs from the nested sampling procedure.\n nprocesses: int, optional\n The number of processes used for parallel evaluation of the likelihood.\n queue_size: int, optional\n Size of internal queue of likelihood values, default is nprocesses if multiprocessing is used.\n maxiter: int, optional\n The maximum number of iterations. Default is no limit.\n maxcall:int, optional\n The maximum number of calls to the likelihood function. Default no limit.\n dlogz: float, optional\n The iteration terminates if the estimated contribution of the remaining prior volume to the total evidence\n falls below this threshold. Default value is `1e-3 * (nlive - 1) + 0.01` if `add_live==True`, 0.01 otherwise.\n n_effective: float, optional\n The iteration terminates if the number of effective posterior samples reaches this values. Default is no limit.\n add_live: bool, optional\n Determines whether to add the remaining set of live points to the set of samples. Default is True.\n sampler: dynesty.NestedSampler, optional\n Continue running an instance of a nested sampler until the termination criteria are met.\n **dynesty_args:\n Arguments passed through to the construction of the dynesty.NestedSampler constructor. Relevant entries\n are (this is not comprehensive, for details see the documentation of dynesty):\n\n nlive: int, optional\n The number of live points. Default is 500.""\n bound: {'none', 'single', 'multi', 'balls', 'cubes'}, optional\n Method used to approximately bound the prior using the current set of live points. Default is 'multi'.\n sample: {'auto', 'unif', 'rwalk', 'rstagger', 'slice', 'rslice', 'hslice', callable}, optional\n Method used to sample uniformly within the likelihood constraint, conditioned on the provided bounds.\n\n Returns\n -------\n sampler: dynesty.NestedSampler\n The state of the sampler after termination of the nested sampling run.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_75latent_infer_nested_sampling(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_maxiter = 0;
PyObject *__pyx_v_maxcall = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_n_effective = 0;
PyObject *__pyx_v_add_live = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_dynesty_args = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_nested_sampling (wrapper)", 0);
__pyx_v_dynesty_args = PyDict_New(); if (unlikely(!__pyx_v_dynesty_args)) return NULL;
__Pyx_GOTREF(__pyx_v_dynesty_args);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_nprocesses,&__pyx_n_s_queue_size,&__pyx_n_s_maxiter,&__pyx_n_s_maxcall,&__pyx_n_s_dlogz,&__pyx_n_s_n_effective,&__pyx_n_s_add_live,&__pyx_n_s_sampler,0};
PyObject* values[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dynesty_args);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_74latent_infer_nested_sampling(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_maxiter, PyObject *__pyx_v_maxcall, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_n_effective, PyObject *__pyx_v_add_live, PyObject *__pyx_v_sampler, PyObject *__pyx_v_dynesty_args) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_param_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_param_guess = NULL;
PyObject *__pyx_v_param_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_param_bounds = NULL;
PyObject *__pyx_v_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_prior_names = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_param_length = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior = NULL;
Py_ssize_t __pyx_v_ndim;
PyObject *__pyx_v_prior_transform_args = NULL;
PyObject *__pyx_v_loglike_args = NULL;
PyObject *__pyx_v_pool = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_nested_sampling", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_nprocesses);
__Pyx_INCREF(__pyx_v_queue_size);
__Pyx_INCREF(__pyx_v_sampler);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_nested_sampling", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_param_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_param_guess);
__Pyx_XDECREF(__pyx_v_param_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_param_bounds);
__Pyx_XDECREF(__pyx_v_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_prior_names);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_param_length);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_prior_transform_args);
__Pyx_XDECREF(__pyx_v_loglike_args);
__Pyx_XDECREF(__pyx_v_pool);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_nprocesses);
__Pyx_XDECREF(__pyx_v_queue_size);
__Pyx_XDECREF(__pyx_v_sampler);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2045: generator=None, intervention_fun=None, tangent=False, verbose=False, nprocesses=0,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)__pyx_int_0);
+2046: queue_size=None, maxiter=None, maxcall=None, dlogz=None, n_effective=None, add_live=True,
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
values[16] = ((PyObject *)Py_True);
+2047: sampler=None, **dynesty_args):
values[17] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling", 0, 5, 18, 1); __PYX_ERR(0, 2044, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling", 0, 5, 18, 2); __PYX_ERR(0, 2044, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling", 0, 5, 18, 3); __PYX_ERR(0, 2044, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling", 0, 5, 18, 4); __PYX_ERR(0, 2044, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxiter);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxcall);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n_effective);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_add_live);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[17] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_dynesty_args, values, pos_args, "latent_infer_nested_sampling") < 0)) __PYX_ERR(0, 2044, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_verbose = values[9];
__pyx_v_nprocesses = values[10];
__pyx_v_queue_size = values[11];
__pyx_v_maxiter = values[12];
__pyx_v_maxcall = values[13];
__pyx_v_dlogz = values[14];
__pyx_v_n_effective = values[15];
__pyx_v_add_live = values[16];
__pyx_v_sampler = values[17];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling", 0, 5, 18, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2044, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_dynesty_args); __pyx_v_dynesty_args = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_nested_sampling", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 2044, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 2044, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_74latent_infer_nested_sampling(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_nprocesses, __pyx_v_queue_size, __pyx_v_maxiter, __pyx_v_maxcall, __pyx_v_dlogz, __pyx_v_n_effective, __pyx_v_add_live, __pyx_v_sampler, __pyx_v_dynesty_args);
2048: """
2049: Compute the log-evidence and weighted samples for the initial conditions and all desired parameters, including control parameters,
2050: for a SIR type model with partially observed classes. This function uses nested sampling as implemented in the `dynesty` Python package.
2051:
2052: Parameters
2053: ----------
2054: obs: 2d numpy.array
2055: The observed trajectories with reduced number of variables
2056: (number of data points, (age groups * observed model classes))
2057: fltr: 2d numpy.array
2058: A matrix of shape (no. observed variables, no. total variables),
2059: such that obs_{ti} = fltr_{ij} * X_{tj}
2060: Tf: float
2061: Total time of the trajectory
2062: contactMatrix: callable
2063: A function that returns the contact matrix at time t (input).
2064: param_priors: dict
2065: A dictionary for priors for the model parameters.
2066: See `latent_infer` for further explanations.
2067: init_priors: dict
2068: A dictionary for priors for the initial conditions.
2069: See `latent_infer` for further explanations.
2070: contactMatrix: callable, optional
2071: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
2072: Either a contactMatrix or a generator must be specified.
2073: generator: pyross.contactMatrix, optional
2074: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
2075: parameters.
2076: Either a contactMatrix or a generator must be specified.
2077: intervention_fun: callable, optional
2078: The calling signature is `intervention_func(t, **kwargs)`,
2079: where t is time and kwargs are other keyword arguments for the function.
2080: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
2081: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
2082: If not set, assume intervention that's constant in time.
2083: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
2084: tangent: bool, optional
2085: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
2086: verbose: bool, optional
2087: Set to True to see intermediate outputs from the nested sampling procedure.
2088: nprocesses: int, optional
2089: The number of processes used for parallel evaluation of the likelihood.
2090: queue_size: int, optional
2091: Size of internal queue of likelihood values, default is nprocesses if multiprocessing is used.
2092: maxiter: int, optional
2093: The maximum number of iterations. Default is no limit.
2094: maxcall:int, optional
2095: The maximum number of calls to the likelihood function. Default no limit.
2096: dlogz: float, optional
2097: The iteration terminates if the estimated contribution of the remaining prior volume to the total evidence
2098: falls below this threshold. Default value is `1e-3 * (nlive - 1) + 0.01` if `add_live==True`, 0.01 otherwise.
2099: n_effective: float, optional
2100: The iteration terminates if the number of effective posterior samples reaches this values. Default is no limit.
2101: add_live: bool, optional
2102: Determines whether to add the remaining set of live points to the set of samples. Default is True.
2103: sampler: dynesty.NestedSampler, optional
2104: Continue running an instance of a nested sampler until the termination criteria are met.
2105: **dynesty_args:
2106: Arguments passed through to the construction of the dynesty.NestedSampler constructor. Relevant entries
2107: are (this is not comprehensive, for details see the documentation of dynesty):
2108:
2109: nlive: int, optional
2110: The number of live points. Default is 500.
2111: bound: {'none', 'single', 'multi', 'balls', 'cubes'}, optional
2112: Method used to approximately bound the prior using the current set of live points. Default is 'multi'.
2113: sample: {'auto', 'unif', 'rwalk', 'rstagger', 'slice', 'rslice', 'hslice', callable}, optional
2114: Method used to sample uniformly within the likelihood constraint, conditioned on the provided bounds.
2115:
2116: Returns
2117: -------
2118: sampler: dynesty.NestedSampler
2119: The state of the sampler after termination of the nested sampling run.
2120: """
2121:
+2122: if dynesty is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+2123: raise Exception("Nested sampling needs optional dependency `dynesty` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2123, __pyx_L1_error)
2124:
+2125: if nprocesses == 0:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_nprocesses, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ }
+2126: if pathos_mp:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2126, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L5; }
2127: # Optional dependecy for multiprocessing (pathos) is installed.
+2128: nprocesses = pathos_mp.cpu_count()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_cpu_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_t_1); __pyx_t_1 = 0;
2129: else:
+2130: nprocesses = 1
/*else*/ {
__Pyx_INCREF(__pyx_int_1);
__Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_int_1);
}
__pyx_L5:;
2131:
+2132: if queue_size is None:
__pyx_t_3 = (__pyx_v_queue_size == Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+2133: queue_size = nprocesses
__Pyx_INCREF(__pyx_v_nprocesses); __Pyx_DECREF_SET(__pyx_v_queue_size, __pyx_v_nprocesses);
2134:
2135: # Sanity checks of the inputs
+2136: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2136, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2136, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2137:
2138: # Process fltr and obs
+2139: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, ((PyObject *)__pyx_v_fltr)); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_v_obs)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2139, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 2139, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2139, __pyx_L1_error) __pyx_L8_unpacking_done:; } if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2139, __pyx_L1_error) if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_v_obs0 = __pyx_t_7; __pyx_t_7 = 0;
2140:
2141: # Read in parameter priors
+2142: param_prior_names, keys, param_guess, param_stds, _, _, param_bounds, param_guess_range, \
__pyx_v_param_prior_names = __pyx_t_7;
__pyx_t_7 = 0;
__pyx_v_keys = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_v_param_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_param_stds = __pyx_t_8;
__pyx_t_8 = 0;
__pyx_v__ = __pyx_t_10;
__pyx_t_10 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_11);
__pyx_t_11 = 0;
__pyx_v_param_bounds = __pyx_t_12;
__pyx_t_12 = 0;
__pyx_v_param_guess_range = __pyx_t_13;
__pyx_t_13 = 0;
__pyx_v_is_scale_parameter = __pyx_t_14;
__pyx_t_14 = 0;
__pyx_v_scaled_param_guesses = __pyx_t_15;
__pyx_t_15 = 0;
2143: is_scale_parameter, scaled_param_guesses \
+2144: = pyross.utils.parse_param_prior_dict(param_priors, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_param_priors); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_check_length, __pyx_t_5) < 0) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2142, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_15 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_8 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_11 = PyList_GET_ITEM(sequence, 5); __pyx_t_12 = PyList_GET_ITEM(sequence, 6); __pyx_t_13 = PyList_GET_ITEM(sequence, 7); __pyx_t_14 = PyList_GET_ITEM(sequence, 8); __pyx_t_15 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_7,&__pyx_t_4,&__pyx_t_1,&__pyx_t_8,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_7,&__pyx_t_4,&__pyx_t_1,&__pyx_t_8,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15}; __pyx_t_16 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_16)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_9(__pyx_t_16); if (unlikely(!item)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_16), 10) < 0) __PYX_ERR(0, 2142, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; goto __pyx_L10_unpacking_done; __pyx_L9_unpacking_failed:; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2142, __pyx_L1_error) __pyx_L10_unpacking_done:; }
2145:
2146: # Read in initial conditions priors
+2147: init_prior_names, init_guess, init_stds, _, _,init_bounds, init_flags, init_fltrs \
__pyx_v_init_prior_names = __pyx_t_15; __pyx_t_15 = 0; __pyx_v_init_guess = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_init_stds = __pyx_t_13; __pyx_t_13 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_12); __pyx_t_12 = 0; __pyx_v_init_bounds = __pyx_t_10; __pyx_t_10 = 0; __pyx_v_init_flags = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_init_fltrs = __pyx_t_1; __pyx_t_1 = 0;
+2148: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_pyross); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_utils); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_17 = PyObject_Length(__pyx_v_obs0); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2148, __pyx_L1_error) __pyx_t_13 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_init_priors, __pyx_t_14, __pyx_t_13}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_init_priors, __pyx_t_14, __pyx_t_13}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif { __pyx_t_11 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_6, __pyx_t_13); __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2147, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_15 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); __pyx_t_13 = PyList_GET_ITEM(sequence, 2); __pyx_t_14 = PyList_GET_ITEM(sequence, 3); __pyx_t_12 = PyList_GET_ITEM(sequence, 4); __pyx_t_10 = PyList_GET_ITEM(sequence, 5); __pyx_t_8 = PyList_GET_ITEM(sequence, 6); __pyx_t_1 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_15,&__pyx_t_11,&__pyx_t_13,&__pyx_t_14,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_1}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2147, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_15,&__pyx_t_11,&__pyx_t_13,&__pyx_t_14,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_1}; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_9(__pyx_t_4); if (unlikely(!item)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 8) < 0) __PYX_ERR(0, 2147, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2147, __pyx_L1_error) __pyx_L12_unpacking_done:; }
2149:
2150: # Concatenate the flattend parameter guess with init guess
+2151: param_length = param_guess.shape[0]
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_guess, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_param_length = __pyx_t_1; __pyx_t_1 = 0;
+2152: guess = np.concatenate([param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_param_guess); __Pyx_GIVEREF(__pyx_v_param_guess); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_guess); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_12, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_astype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_8, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_guess = __pyx_t_1; __pyx_t_1 = 0;
+2153: stds = np.concatenate([param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_param_stds); __Pyx_GIVEREF(__pyx_v_param_stds); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_init_stds); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_12, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_stds = __pyx_t_1; __pyx_t_1 = 0;
+2154: bounds = np.concatenate([param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_param_bounds); __Pyx_GIVEREF(__pyx_v_param_bounds); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_bounds); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2154, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_12); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
2155:
+2156: prior = Prior(param_prior_names+init_prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Prior); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = PyNumber_Add(__pyx_v_param_prior_names, __pyx_v_init_prior_names); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_12, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_12, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_t_12); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_6, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_6, __pyx_v_stds); __pyx_t_12 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_prior = __pyx_t_1; __pyx_t_1 = 0;
2157:
+2158: ndim = len(guess)
__pyx_t_17 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2158, __pyx_L1_error) __pyx_v_ndim = __pyx_t_17;
2159:
+2160: prior_transform_args = {'prior':prior}
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 2160, __pyx_L1_error) __pyx_v_prior_transform_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2161: loglike_args = {'generator':generator, 'intervention_fun':intervention_fun, 'param_keys':keys,
__pyx_t_1 = __Pyx_PyDict_NewPresized(15); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 2161, __pyx_L1_error)
+2162: 'param_guess_range':param_guess_range, 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 2161, __pyx_L1_error)
+2163: 'scaled_param_guesses':scaled_param_guesses, 'param_length':param_length, 'obs':obs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 2161, __pyx_L1_error)
+2164: 'fltr':fltr, 'Tf':Tf, 'obs0':obs0, 'init_flags':init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs0, __pyx_v_obs0) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 2161, __pyx_L1_error)
+2165: 'tangent':tangent, 'bounds':bounds}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_bounds, __pyx_v_bounds) < 0) __PYX_ERR(0, 2161, __pyx_L1_error) __pyx_v_loglike_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2166:
+2167: if sampler is None:
__pyx_t_2 = (__pyx_v_sampler == Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L13;
}
+2168: if nprocesses > 1:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L14; }
+2169: pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_8, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_pool = __pyx_t_1; __pyx_t_1 = 0;
+2170: sampler = dynesty.NestedSampler(self._loglikelihood_latent, self._nested_sampling_prior_transform, ndim=ndim,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NestedSampler); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood_latent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_8); __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_ndim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ndim, __pyx_t_5) < 0) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_1); __pyx_t_1 = 0;
+2171: logl_kwargs=loglike_args, ptform_kwargs=prior_transform_args,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_logl_kwargs, __pyx_v_loglike_args) < 0) __PYX_ERR(0, 2170, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ptform_kwargs, __pyx_v_prior_transform_args) < 0) __PYX_ERR(0, 2170, __pyx_L1_error)
+2172: pool=pool, queue_size=queue_size, **dynesty_args)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pool, __pyx_v_pool) < 0) __PYX_ERR(0, 2170, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_queue_size, __pyx_v_queue_size) < 0) __PYX_ERR(0, 2170, __pyx_L1_error) __pyx_t_8 = __pyx_t_1; __pyx_t_1 = 0; if (__Pyx_MergeKeywords(__pyx_t_8, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 2172, __pyx_L1_error)
2173: else:
+2174: sampler = dynesty.NestedSampler(self._loglikelihood_latent, self._nested_sampling_prior_transform, ndim=ndim,
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dynesty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NestedSampler); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_loglikelihood_latent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_12);
PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12);
__pyx_t_1 = 0;
__pyx_t_12 = 0;
__pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_ndim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ndim, __pyx_t_5) < 0) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_1);
__pyx_t_1 = 0;
}
__pyx_L14:;
+2175: logl_kwargs=loglike_args, ptform_kwargs=prior_transform_args,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_logl_kwargs, __pyx_v_loglike_args) < 0) __PYX_ERR(0, 2174, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ptform_kwargs, __pyx_v_prior_transform_args) < 0) __PYX_ERR(0, 2174, __pyx_L1_error) __pyx_t_12 = __pyx_t_1; __pyx_t_1 = 0;
+2176: **dynesty_args)
if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_dynesty_args) < 0) __PYX_ERR(0, 2176, __pyx_L1_error)
2177: else:
+2178: if nprocesses > 1:
/*else*/ {
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2178, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2178, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_3) {
/* … */
goto __pyx_L15;
}
2179: # Restart the pool we closed at the end of the previous run.
+2180: sampler.pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_12, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, __pyx_t_1) < 0) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2181: sampler.M = sampler.pool.map
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_map); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_M, __pyx_t_10) < 0) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+2182: elif sampler.pool is not None:
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = (__pyx_t_10 != Py_None); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { /* … */ } __pyx_L15:; } __pyx_L13:;
+2183: sampler.pool = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, Py_None) < 0) __PYX_ERR(0, 2183, __pyx_L1_error)
+2184: sampler.M = map
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_M, __pyx_builtin_map) < 0) __PYX_ERR(0, 2184, __pyx_L1_error)
2185:
+2186: sampler.run_nested(maxiter=maxiter, maxcall=maxcall, dlogz=dlogz, n_effective=n_effective,
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_nested); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_maxiter, __pyx_v_maxiter) < 0) __PYX_ERR(0, 2186, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_maxcall, __pyx_v_maxcall) < 0) __PYX_ERR(0, 2186, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dlogz, __pyx_v_dlogz) < 0) __PYX_ERR(0, 2186, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_n_effective, __pyx_v_n_effective) < 0) __PYX_ERR(0, 2186, __pyx_L1_error) /* … */ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2187: add_live=add_live, print_progress=verbose)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_add_live, __pyx_v_add_live) < 0) __PYX_ERR(0, 2186, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_print_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 2186, __pyx_L1_error)
2188:
+2189: if sampler.pool is not None:
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_2 = (__pyx_t_12 != Py_None); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* … */ }
+2190: sampler.pool.close()
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_close); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_12 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_10); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2191: sampler.pool.join()
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_12 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2192: sampler.pool.clear()
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_clear); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_12 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_10); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
2193:
+2194: return sampler
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_sampler); __pyx_r = __pyx_v_sampler; goto __pyx_L0;
2195:
+2196: def latent_infer_nested_sampling_process_result(self, sampler, obs, fltr, param_priors, init_priors, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_77latent_infer_nested_sampling_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_76latent_infer_nested_sampling_process_result[] = "\n Take the sampler generated by `pyross.inference.latent_infer_nested_sampling` and produce output dictionaries for\n further use in the pyross framework. See there for additional description of parameters.\n\n Parameters\n ----------\n sampler: dynesty.NestedSampler\n Output of `pyross.inference.latent_infer_nested_sampling`.\n obs: 2d numpy.array\n fltr: 2d numpy.array\n param_priors: dict\n init_priors: dict\n contactMatrix: callable, optional\n generator: pyross.contactMatrix, optional\n intervention_fun: callable, optional\n **catchall_kwargs: dict\n Catches further provided arguments and ignores them.\n\n Returns\n -------\n result: dynesty.Result\n The result of the nested sampling iteration. Relevant entries include:\n\n result.logz: list\n The progression of log-evidence estimates, use result.logz[-1] for the final estimate.\n output_samples: list\n The processed weighted posterior samples.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_77latent_infer_nested_sampling_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_nested_sampling_process_result (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_76latent_infer_nested_sampling_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_param_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_param_guess = NULL;
PyObject *__pyx_v_param_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_param_bounds = NULL;
PyObject *__pyx_v_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_prior_names = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_param_length = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_output_samples = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_weight = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_param_sample = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_init_sample = NULL;
PyObject *__pyx_v_sample_params_dict = NULL;
PyObject *__pyx_v_sample_control_params_dict = NULL;
PyObject *__pyx_v_sample_x0 = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_output_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_nested_sampling_process_result", 0);
__Pyx_INCREF(__pyx_v_obs);
__Pyx_INCREF(__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_nested_sampling_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_param_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_param_guess);
__Pyx_XDECREF(__pyx_v_param_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_param_bounds);
__Pyx_XDECREF(__pyx_v_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_prior_names);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_param_length);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_weight);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_param_sample);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_init_sample);
__Pyx_XDECREF(__pyx_v_sample_params_dict);
__Pyx_XDECREF(__pyx_v_sample_control_params_dict);
__Pyx_XDECREF(__pyx_v_sample_x0);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XDECREF(__pyx_v_obs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2197: generator=None, intervention_fun=None, **catchall_kwargs):
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling_process_result", 0, 5, 8, 1); __PYX_ERR(0, 2196, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling_process_result", 0, 5, 8, 2); __PYX_ERR(0, 2196, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling_process_result", 0, 5, 8, 3); __PYX_ERR(0, 2196, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling_process_result", 0, 5, 8, 4); __PYX_ERR(0, 2196, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "latent_infer_nested_sampling_process_result") < 0)) __PYX_ERR(0, 2196, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_obs = values[1];
__pyx_v_fltr = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_nested_sampling_process_result", 0, 5, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2196, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_nested_sampling_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_76latent_infer_nested_sampling_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_obs, __pyx_v_fltr, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_catchall_kwargs);
2198: """
2199: Take the sampler generated by `pyross.inference.latent_infer_nested_sampling` and produce output dictionaries for
2200: further use in the pyross framework. See there for additional description of parameters.
2201:
2202: Parameters
2203: ----------
2204: sampler: dynesty.NestedSampler
2205: Output of `pyross.inference.latent_infer_nested_sampling`.
2206: obs: 2d numpy.array
2207: fltr: 2d numpy.array
2208: param_priors: dict
2209: init_priors: dict
2210: contactMatrix: callable, optional
2211: generator: pyross.contactMatrix, optional
2212: intervention_fun: callable, optional
2213: **catchall_kwargs: dict
2214: Catches further provided arguments and ignores them.
2215:
2216: Returns
2217: -------
2218: result: dynesty.Result
2219: The result of the nested sampling iteration. Relevant entries include:
2220:
2221: result.logz: list
2222: The progression of log-evidence estimates, use result.logz[-1] for the final estimate.
2223: output_samples: list
2224: The processed weighted posterior samples.
2225: """
2226: # Sanity checks of the inputs
+2227: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2228:
2229: # Process fltr and obs
+2230: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2230, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 2230, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2230, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, __pyx_t_3); __pyx_t_3 = 0; __pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
2231:
2232: # Read in parameter priors
+2233: param_prior_names, keys, param_guess, param_stds, _, _, param_bounds, param_guess_range, \
__pyx_v_param_prior_names = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_keys = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_param_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_param_stds = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v__ = __pyx_t_8;
__pyx_t_8 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_9);
__pyx_t_9 = 0;
__pyx_v_param_bounds = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_param_guess_range = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_is_scale_parameter = __pyx_t_12;
__pyx_t_12 = 0;
__pyx_v_scaled_param_guesses = __pyx_t_13;
__pyx_t_13 = 0;
2234: is_scale_parameter, scaled_param_guesses \
+2235: = pyross.utils.parse_param_prior_dict(param_priors, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_priors); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_check_length, __pyx_t_2) < 0) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2233, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); __pyx_t_10 = PyList_GET_ITEM(sequence, 6); __pyx_t_11 = PyList_GET_ITEM(sequence, 7); __pyx_t_12 = PyList_GET_ITEM(sequence, 8); __pyx_t_13 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; __pyx_t_14 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_14)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_7(__pyx_t_14); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_14), 10) < 0) __PYX_ERR(0, 2233, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2233, __pyx_L1_error) __pyx_L6_unpacking_done:; }
2236:
2237: # Read in initial conditions priors
+2238: init_prior_names, init_guess, init_stds, _, _,init_bounds, init_flags, init_fltrs \
__pyx_v_init_prior_names = __pyx_t_13; __pyx_t_13 = 0; __pyx_v_init_guess = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_init_stds = __pyx_t_11; __pyx_t_11 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_10); __pyx_t_10 = 0; __pyx_v_init_bounds = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_init_flags = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_init_fltrs = __pyx_t_1; __pyx_t_1 = 0;
+2239: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pyross); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_utils); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_15 = PyObject_Length(__pyx_v_obs0); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2239, __pyx_L1_error) __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2238, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_13 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); __pyx_t_11 = PyList_GET_ITEM(sequence, 2); __pyx_t_12 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_6 = PyList_GET_ITEM(sequence, 6); __pyx_t_1 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_7(__pyx_t_3); if (unlikely(!item)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 8) < 0) __PYX_ERR(0, 2238, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2238, __pyx_L1_error) __pyx_L8_unpacking_done:; }
2240:
2241: # Concatenate the flattend parameter guess with init guess
+2242: param_length = param_guess.shape[0]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_guess, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_param_length = __pyx_t_1; __pyx_t_1 = 0;
+2243: guess = np.concatenate([param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_guess); __Pyx_GIVEREF(__pyx_v_param_guess); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_guess); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_guess = __pyx_t_1; __pyx_t_1 = 0;
+2244: stds = np.concatenate([param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_param_stds); __Pyx_GIVEREF(__pyx_v_param_stds); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_init_stds); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_stds = __pyx_t_1; __pyx_t_1 = 0;
+2245: bounds = np.concatenate([param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_bounds); __Pyx_GIVEREF(__pyx_v_param_bounds); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_bounds); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2245, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
2246:
+2247: prior = Prior(param_prior_names+init_prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Prior); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyNumber_Add(__pyx_v_param_prior_names, __pyx_v_init_prior_names); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_t_10, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_t_10, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_prior = __pyx_t_1; __pyx_t_1 = 0;
2248:
+2249: result = sampler.results
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_results); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0;
+2250: output_samples = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_output_samples = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2251: for i in range(len(result.samples)):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2251, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_16 = __pyx_t_15; for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_i = __pyx_t_17;
+2252: sample = result.samples[i]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_6); __pyx_t_6 = 0;
+2253: weight = np.exp(result.logwt[i] - result.logz[len(result.logz)-1])
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logwt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_18 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_19 = (__pyx_t_18 - 1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_19, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_6 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_weight, __pyx_t_6); __pyx_t_6 = 0;
+2254: l_like = result.logl[i]
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logl); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_l_like, __pyx_t_8); __pyx_t_8 = 0;
2255: # Get the parameters (in their original structure) from the flattened parameter vector.
+2256: param_sample = sample[:param_length]
__pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_sample, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_XDECREF_SET(__pyx_v_param_sample, __pyx_t_8); __pyx_t_8 = 0;
+2257: orig_params = pyross.utils.unflatten_parameters(param_sample, param_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2258: is_scale_parameter, scaled_param_guesses)
__pyx_t_1 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_param_sample, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2257, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GOTREF(__pyx_t_8);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_param_sample, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2257, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GOTREF(__pyx_t_8);
} else
#endif
{
__pyx_t_2 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_1) {
__Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
}
__Pyx_INCREF(__pyx_v_param_sample);
__Pyx_GIVEREF(__pyx_v_param_sample);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_v_param_sample);
__Pyx_INCREF(__pyx_v_param_guess_range);
__Pyx_GIVEREF(__pyx_v_param_guess_range);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_param_guess_range);
__Pyx_INCREF(__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_4, __pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_v_scaled_param_guesses);
__Pyx_GIVEREF(__pyx_v_scaled_param_guesses);
PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_4, __pyx_v_scaled_param_guesses);
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF_SET(__pyx_v_orig_params, __pyx_t_8);
__pyx_t_8 = 0;
+2259: init_sample = sample[param_length:]
__pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_sample, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_XDECREF_SET(__pyx_v_init_sample, __pyx_t_8); __pyx_t_8 = 0;
2260:
+2261: sample_params_dict, sample_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_orig_params); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 2261, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2261, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_8), 2) < 0) __PYX_ERR(0, 2261, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2261, __pyx_L1_error) __pyx_L12_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_sample_params_dict, __pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_sample_control_params_dict, __pyx_t_6); __pyx_t_6 = 0;
+2262: self.set_params(sample_params_dict)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_v_sample_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_sample_params_dict); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2263:
+2264: if generator is not None:
__pyx_t_20 = (__pyx_v_generator != Py_None);
__pyx_t_21 = (__pyx_t_20 != 0);
if (__pyx_t_21) {
/* … */
}
+2265: if intervention_fun is None:
__pyx_t_21 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_20 = (__pyx_t_21 != 0);
if (__pyx_t_20) {
/* … */
goto __pyx_L14;
}
+2266: self.contactMatrix = generator.constant_contactMatrix(**sample_control_params_dict)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(__pyx_v_sample_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 2266, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_sample_control_params_dict))) { __pyx_t_6 = PyDict_Copy(__pyx_v_sample_control_params_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_sample_control_params_dict, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_2; __pyx_t_2 = 0;
2267: else:
+2268: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **sample_control_params_dict)
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_sample_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2268, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_sample_control_params_dict))) {
__pyx_t_1 = PyDict_Copy(__pyx_v_sample_control_params_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
} else {
__pyx_t_1 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_sample_control_params_dict, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_GIVEREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_8;
__pyx_t_8 = 0;
}
__pyx_L14:;
2269:
+2270: sample_x0 = self._construct_inits(init_sample, init_flags, init_fltrs, obs0, fltr[0])
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_2, __pyx_v_init_sample, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_6}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_2, __pyx_v_init_sample, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_6}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_init_sample); __Pyx_GIVEREF(__pyx_v_init_sample); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_init_sample); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_4, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_4, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_sample_x0, __pyx_t_8); __pyx_t_8 = 0;
+2271: l_prior = np.sum(prior.logpdf(sample))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF_SET(__pyx_v_l_prior, __pyx_t_8); __pyx_t_8 = 0;
+2272: l_post = l_prior + l_like
__pyx_t_8 = PyNumber_Add(__pyx_v_l_prior, __pyx_v_l_like); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_8); __pyx_t_8 = 0;
2273: output_dict = {
+2274: 'params_dict':sample_params_dict, 'x0':sample_x0, 'flat_params':sample,
__pyx_t_8 = __Pyx_PyDict_NewPresized(15); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_params_dict, __pyx_v_sample_params_dict) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_x0, __pyx_v_sample_x0) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_flat_params, __pyx_v_sample) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2275: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2276: 'weight':weight, 'param_keys': keys, 'param_guess_range': param_guess_range,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_weight, __pyx_v_weight) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2277: 'is_scale_parameter':is_scale_parameter, 'param_length':param_length,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2278: 'scaled_param_guesses':scaled_param_guesses,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2279: 'init_flags': init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
+2280: 'prior':prior
if (PyDict_SetItem(__pyx_t_8, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 2274, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_output_dict, ((PyObject*)__pyx_t_8)); __pyx_t_8 = 0;
2281: }
2282:
+2283: if sample_control_params_dict != {}:
__pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = PyObject_RichCompare(__pyx_v_sample_control_params_dict, __pyx_t_8, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2283, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 2283, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_20) { /* … */ }
+2284: output_dict['control_params_dict'] = sample_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_sample_control_params_dict) < 0)) __PYX_ERR(0, 2284, __pyx_L1_error)
2285:
+2286: output_samples.append(output_dict)
__pyx_t_22 = __Pyx_PyList_Append(__pyx_v_output_samples, __pyx_v_output_dict); if (unlikely(__pyx_t_22 == ((int)-1))) __PYX_ERR(0, 2286, __pyx_L1_error) }
2287:
+2288: return result, output_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_result); __Pyx_INCREF(__pyx_v_output_samples); __Pyx_GIVEREF(__pyx_v_output_samples); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_output_samples); __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0;
2289:
+2290: def latent_infer_mcmc(self, np.ndarray obs, np.ndarray fltr, Tf, param_priors, init_priors, contactMatrix=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_79latent_infer_mcmc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_78latent_infer_mcmc[] = " Sample the posterior distribution of the initial conditions and all desired parameters, including control parameters, using\n ensemble MCMC. This requires the optional dependency `emcee`.\n\n Parameters\n ----------\n obs: 2d numpy.array\n The observed trajectories with reduced number of variables\n (number of data points, (age groups * observed model classes))\n fltr: 2d numpy.array\n A matrix of shape (no. observed variables, no. total variables),\n such that obs_{ti} = fltr_{ij} * X_{tj}\n Tf: float\n Total time of the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n param_priors: dict\n A dictionary for priors for the model parameters.\n See `latent_infer_parameters` for further explanations.\n init_priors: dict\n A dictionary for priors for the initial conditions.\n See `latent_infer_parameters` for further explanations.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n verbose: bool, optional\n Set to True to see a progress bar for the sample generation. Default is False.\n sampler: emcee.EnsembleSampler, optional\n Set to instance of the sampler (as returned by this function) to continue running the MCMC chains.\n Default is None (i.e. run a new chain).\n nwalkers:int, optional\n The number of chains in the ensemble (should be at least 2*dim). Default is 2*dim.\n walker_pos: np.array, optional\n The initial position of the walkers. If not specified, the function samples random positions from the prior.\n nsamples:int, optional\n The number of samples per walker. Default is 1000.\n nprocesses: int, optional\n The number of processes used to compute the likeliho""od for the walkers, needs `pathos` for values > 1.\n Default is the number of cpu cores if `pathos` is available, otherwise 1.\n\n Returns\n -------\n sampler: emcee.EnsembleSampler\n This function returns the state of the sampler. To look at the chain of the internal flattened parameters,\n run `sampler.get_chain()`. Use this to judge whether the chain has sufficiently converged. Either rerun\n `latent_infer_mcmc(..., sampler=sampler)` to continue the chain or `latent_infer_mcmc_process_result(...)`\n to process the result.\n\n Examples\n --------\n For the structure of the model input parameters, in particular `param_priors, init_priors`, see the documentation\n of `latent_infer`. To start sampling the posterior, run for example\n\n >>> sampler = estimator.latent_infer_mcmc(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,\n verbose=True)\n\n To judge the convergence of this chain, we can look at the trace plot of all the chains (for a moderate number of\n dimensions `dim`)\n\n >>> fig, axes = plt.subplots(dim, sharex=True)\n >>> samples = sampler.get_chain()\n >>> for i in range(dim):\n ax = axes[i]\n ax.plot(samples[:, :, i], \"k\", alpha=0.3)\n ax.set_xlim(0, len(samples))\n >>> axes[-1].set_xlabel(\"step number\");\n\n For more detailed convergence metrics, see the documentation of `emcee`. To continue running this chain, we can\n call this function again with the sampler as argument\n\n >>> sampler = estimator.latent_infer_mcmc(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,\n verbose=True, sampler=sampler)\n\n This procudes 1000 additional samples in each chain. To process the results, call\n "" `pyross.inference.latent_infer_mcmc_process_result`.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_79latent_infer_mcmc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_nwalkers = 0;
PyObject *__pyx_v_walker_pos = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_mcmc (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_sampler,&__pyx_n_s_nwalkers,&__pyx_n_s_walker_pos,&__pyx_n_s_nsamples,&__pyx_n_s_nprocesses,0};
PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_78latent_infer_mcmc(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_sampler, PyObject *__pyx_v_nwalkers, PyObject *__pyx_v_walker_pos, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_param_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_param_guess = NULL;
PyObject *__pyx_v_param_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_param_bounds = NULL;
PyObject *__pyx_v_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_prior_names = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_param_length = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_ndim = NULL;
PyObject *__pyx_v_logpost_args = NULL;
PyObject *__pyx_v_points = NULL;
PyObject *__pyx_v_p0 = NULL;
PyObject *__pyx_v_mcmc_pool = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_mcmc", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_sampler);
__Pyx_INCREF(__pyx_v_nwalkers);
__Pyx_INCREF(__pyx_v_nprocesses);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_mcmc", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_param_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_param_guess);
__Pyx_XDECREF(__pyx_v_param_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_param_bounds);
__Pyx_XDECREF(__pyx_v_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_prior_names);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_param_length);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_ndim);
__Pyx_XDECREF(__pyx_v_logpost_args);
__Pyx_XDECREF(__pyx_v_points);
__Pyx_XDECREF(__pyx_v_p0);
__Pyx_XDECREF(__pyx_v_mcmc_pool);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_sampler);
__Pyx_XDECREF(__pyx_v_nwalkers);
__Pyx_XDECREF(__pyx_v_nprocesses);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2291: intervention_fun=None, tangent=False, verbose=False, sampler=None, nwalkers=None, walker_pos=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)__pyx_int_1000);
values[14] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc", 0, 5, 15, 1); __PYX_ERR(0, 2290, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc", 0, 5, 15, 2); __PYX_ERR(0, 2290, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc", 0, 5, 15, 3); __PYX_ERR(0, 2290, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc", 0, 5, 15, 4); __PYX_ERR(0, 2290, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nwalkers);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_walker_pos);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[14] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_infer_mcmc") < 0)) __PYX_ERR(0, 2290, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = ((PyArrayObject *)values[0]);
__pyx_v_fltr = ((PyArrayObject *)values[1]);
__pyx_v_Tf = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_verbose = values[9];
__pyx_v_sampler = values[10];
__pyx_v_nwalkers = values[11];
__pyx_v_walker_pos = values[12];
__pyx_v_nsamples = values[13];
__pyx_v_nprocesses = values[14];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc", 0, 5, 15, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2290, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_mcmc", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 2290, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 2290, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_78latent_infer_mcmc(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_sampler, __pyx_v_nwalkers, __pyx_v_walker_pos, __pyx_v_nsamples, __pyx_v_nprocesses);
2292: nsamples=1000, nprocesses=0):
2293: """ Sample the posterior distribution of the initial conditions and all desired parameters, including control parameters, using
2294: ensemble MCMC. This requires the optional dependency `emcee`.
2295:
2296: Parameters
2297: ----------
2298: obs: 2d numpy.array
2299: The observed trajectories with reduced number of variables
2300: (number of data points, (age groups * observed model classes))
2301: fltr: 2d numpy.array
2302: A matrix of shape (no. observed variables, no. total variables),
2303: such that obs_{ti} = fltr_{ij} * X_{tj}
2304: Tf: float
2305: Total time of the trajectory
2306: contactMatrix: callable
2307: A function that returns the contact matrix at time t (input).
2308: param_priors: dict
2309: A dictionary for priors for the model parameters.
2310: See `latent_infer_parameters` for further explanations.
2311: init_priors: dict
2312: A dictionary for priors for the initial conditions.
2313: See `latent_infer_parameters` for further explanations.
2314: tangent: bool, optional
2315: Set to True to use tangent space inference. Default is False.
2316: verbose: bool, optional
2317: Set to True to see a progress bar for the sample generation. Default is False.
2318: sampler: emcee.EnsembleSampler, optional
2319: Set to instance of the sampler (as returned by this function) to continue running the MCMC chains.
2320: Default is None (i.e. run a new chain).
2321: nwalkers:int, optional
2322: The number of chains in the ensemble (should be at least 2*dim). Default is 2*dim.
2323: walker_pos: np.array, optional
2324: The initial position of the walkers. If not specified, the function samples random positions from the prior.
2325: nsamples:int, optional
2326: The number of samples per walker. Default is 1000.
2327: nprocesses: int, optional
2328: The number of processes used to compute the likelihood for the walkers, needs `pathos` for values > 1.
2329: Default is the number of cpu cores if `pathos` is available, otherwise 1.
2330:
2331: Returns
2332: -------
2333: sampler: emcee.EnsembleSampler
2334: This function returns the state of the sampler. To look at the chain of the internal flattened parameters,
2335: run `sampler.get_chain()`. Use this to judge whether the chain has sufficiently converged. Either rerun
2336: `latent_infer_mcmc(..., sampler=sampler)` to continue the chain or `latent_infer_mcmc_process_result(...)`
2337: to process the result.
2338:
2339: Examples
2340: --------
2341: For the structure of the model input parameters, in particular `param_priors, init_priors`, see the documentation
2342: of `latent_infer`. To start sampling the posterior, run for example
2343:
2344: >>> sampler = estimator.latent_infer_mcmc(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,
2345: verbose=True)
2346:
2347: To judge the convergence of this chain, we can look at the trace plot of all the chains (for a moderate number of
2348: dimensions `dim`)
2349:
2350: >>> fig, axes = plt.subplots(dim, sharex=True)
2351: >>> samples = sampler.get_chain()
2352: >>> for i in range(dim):
2353: ax = axes[i]
2354: ax.plot(samples[:, :, i], "k", alpha=0.3)
2355: ax.set_xlim(0, len(samples))
2356: >>> axes[-1].set_xlabel("step number");
2357:
2358: For more detailed convergence metrics, see the documentation of `emcee`. To continue running this chain, we can
2359: call this function again with the sampler as argument
2360:
2361: >>> sampler = estimator.latent_infer_mcmc(obs, fltr, Tf, param_priors, init_priors, contactMatrix=contactMatrix,
2362: verbose=True, sampler=sampler)
2363:
2364: This procudes 1000 additional samples in each chain. To process the results, call
2365: `pyross.inference.latent_infer_mcmc_process_result`.
2366: """
+2367: if emcee is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_emcee); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+2368: raise Exception("MCMC sampling needs optional dependency `emcee` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2368, __pyx_L1_error)
2369:
+2370: if nprocesses == 0:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_nprocesses, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2370, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2370, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ }
+2371: if pathos_mp:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2371, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L5; }
2372: # Optional dependecy for multiprocessing (pathos) is installed.
+2373: nprocesses = pathos_mp.cpu_count()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_cpu_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_t_1); __pyx_t_1 = 0;
2374: else:
+2375: nprocesses = 1
/*else*/ {
__Pyx_INCREF(__pyx_int_1);
__Pyx_DECREF_SET(__pyx_v_nprocesses, __pyx_int_1);
}
__pyx_L5:;
2376:
+2377: if nprocesses > 1 and pathos_mp is None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2377, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2377, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = (__pyx_t_2 != 0); __pyx_t_3 = __pyx_t_6; __pyx_L7_bool_binop_done:; if (unlikely(__pyx_t_3)) { /* … */ }
+2378: raise Exception("The Python package `pathos` is needed for multiprocessing.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2378, __pyx_L1_error)
2379:
2380: # Sanity checks of the inputs
+2381: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2381, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2381, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2382:
2383: # Process fltr and obs
+2384: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, ((PyObject *)__pyx_v_fltr)); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, ((PyObject *)__pyx_v_obs)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2384, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_8 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 2384, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L10_unpacking_done; __pyx_L9_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2384, __pyx_L1_error) __pyx_L10_unpacking_done:; } if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2384, __pyx_L1_error) if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2384, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_5)); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_v_obs0 = __pyx_t_8; __pyx_t_8 = 0;
2385:
2386: # Read in parameter priors
+2387: param_prior_names, keys, param_guess, param_stds, _, _, param_bounds, param_guess_range, \
__pyx_v_param_prior_names = __pyx_t_8;
__pyx_t_8 = 0;
__pyx_v_keys = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_v_param_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_param_stds = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_v__ = __pyx_t_11;
__pyx_t_11 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_12);
__pyx_t_12 = 0;
__pyx_v_param_bounds = __pyx_t_13;
__pyx_t_13 = 0;
__pyx_v_param_guess_range = __pyx_t_14;
__pyx_t_14 = 0;
__pyx_v_is_scale_parameter = __pyx_t_15;
__pyx_t_15 = 0;
__pyx_v_scaled_param_guesses = __pyx_t_16;
__pyx_t_16 = 0;
2388: is_scale_parameter, scaled_param_guesses \
+2389: = pyross.utils.parse_param_prior_dict(param_priors, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_param_priors); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_check_length, __pyx_t_5) < 0) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2387, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_15 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_16 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_9 = PyList_GET_ITEM(sequence, 3); __pyx_t_11 = PyList_GET_ITEM(sequence, 4); __pyx_t_12 = PyList_GET_ITEM(sequence, 5); __pyx_t_13 = PyList_GET_ITEM(sequence, 6); __pyx_t_14 = PyList_GET_ITEM(sequence, 7); __pyx_t_15 = PyList_GET_ITEM(sequence, 8); __pyx_t_16 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(__pyx_t_16); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_8,&__pyx_t_4,&__pyx_t_1,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15,&__pyx_t_16}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2387, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_8,&__pyx_t_4,&__pyx_t_1,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14,&__pyx_t_15,&__pyx_t_16}; __pyx_t_17 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_17)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_10(__pyx_t_17); if (unlikely(!item)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_17), 10) < 0) __PYX_ERR(0, 2387, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2387, __pyx_L1_error) __pyx_L12_unpacking_done:; }
2390:
2391: # Read in initial conditions priors
+2392: init_prior_names, init_guess, init_stds, _, _,init_bounds, init_flags, init_fltrs \
__pyx_v_init_prior_names = __pyx_t_16; __pyx_t_16 = 0; __pyx_v_init_guess = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_init_stds = __pyx_t_14; __pyx_t_14 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_13); __pyx_t_13 = 0; __pyx_v_init_bounds = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_init_flags = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_init_fltrs = __pyx_t_1; __pyx_t_1 = 0;
+2393: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_pyross); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_utils); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_18 = PyObject_Length(__pyx_v_obs0); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2393, __pyx_L1_error) __pyx_t_14 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_16); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_16, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_16)) { PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_v_init_priors, __pyx_t_15, __pyx_t_14}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_16)) { PyObject *__pyx_temp[4] = {__pyx_t_13, __pyx_v_init_priors, __pyx_t_15, __pyx_t_14}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_16, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_13) { __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_7, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_7, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_7, __pyx_t_14); __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2392, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_16 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_15 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_16 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); __pyx_t_14 = PyList_GET_ITEM(sequence, 2); __pyx_t_15 = PyList_GET_ITEM(sequence, 3); __pyx_t_13 = PyList_GET_ITEM(sequence, 4); __pyx_t_11 = PyList_GET_ITEM(sequence, 5); __pyx_t_9 = PyList_GET_ITEM(sequence, 6); __pyx_t_1 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_12,&__pyx_t_14,&__pyx_t_15,&__pyx_t_13,&__pyx_t_11,&__pyx_t_9,&__pyx_t_1}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2392, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_12,&__pyx_t_14,&__pyx_t_15,&__pyx_t_13,&__pyx_t_11,&__pyx_t_9,&__pyx_t_1}; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_10(__pyx_t_4); if (unlikely(!item)) goto __pyx_L13_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_4), 8) < 0) __PYX_ERR(0, 2392, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L14_unpacking_done; __pyx_L13_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2392, __pyx_L1_error) __pyx_L14_unpacking_done:; }
2394:
2395: # Concatenate the flattend parameter guess with init guess
+2396: param_length = param_guess.shape[0]
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_guess, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_param_length = __pyx_t_1; __pyx_t_1 = 0;
+2397: guess = np.concatenate([param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyList_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_param_guess); __Pyx_GIVEREF(__pyx_v_param_guess); PyList_SET_ITEM(__pyx_t_9, 0, __pyx_v_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_9, 1, __pyx_v_init_guess); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_5 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_13, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_9); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_astype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_9, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_guess = __pyx_t_1; __pyx_t_1 = 0;
+2398: stds = np.concatenate([param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_param_stds); __Pyx_GIVEREF(__pyx_v_param_stds); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_init_stds); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_11 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_13, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_astype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_5, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_stds = __pyx_t_1; __pyx_t_1 = 0;
+2399: bounds = np.concatenate([param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyList_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_param_bounds); __Pyx_GIVEREF(__pyx_v_param_bounds); PyList_SET_ITEM(__pyx_t_9, 0, __pyx_v_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_9, 1, __pyx_v_init_bounds); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2399, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_astype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_5, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_13); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
2400:
+2401: prior = Prior(param_prior_names+init_prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_Prior); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = PyNumber_Add(__pyx_v_param_prior_names, __pyx_v_init_prior_names); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_5 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_13, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_13, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif { __pyx_t_11 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_7, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_7, __pyx_v_stds); __pyx_t_13 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_prior = __pyx_t_1; __pyx_t_1 = 0;
2402:
+2403: ndim = len(guess)
__pyx_t_18 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2403, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_ndim = __pyx_t_1; __pyx_t_1 = 0;
2404:
+2405: if nwalkers is None:
__pyx_t_3 = (__pyx_v_nwalkers == Py_None);
__pyx_t_6 = (__pyx_t_3 != 0);
if (__pyx_t_6) {
/* … */
}
+2406: nwalkers = 2*ndim
__pyx_t_1 = PyNumber_Multiply(__pyx_int_2, __pyx_v_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_nwalkers, __pyx_t_1); __pyx_t_1 = 0;
2407:
+2408: logpost_args = {'generator':generator, 'intervention_fun':intervention_fun, 'bounds':bounds, 'param_keys':keys,
__pyx_t_1 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_bounds, __pyx_v_bounds) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 2408, __pyx_L1_error)
+2409: 'param_guess_range':param_guess_range, 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 2408, __pyx_L1_error)
+2410: 'scaled_param_guesses':scaled_param_guesses, 'param_length':param_length, 'obs':obs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 2408, __pyx_L1_error)
+2411: 'fltr':fltr, 'Tf':Tf, 'obs0':obs0, 'init_flags':init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs0, __pyx_v_obs0) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 2408, __pyx_L1_error)
+2412: 'prior':prior, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 2408, __pyx_L1_error) __pyx_v_logpost_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2413:
+2414: if walker_pos is None:
__pyx_t_6 = (__pyx_v_walker_pos == Py_None);
__pyx_t_3 = (__pyx_t_6 != 0);
if (__pyx_t_3) {
/* … */
goto __pyx_L16;
}
2415: # If not specified, sample initial positions of walkers from prior (within bounds).
+2416: points = np.random.rand(nwalkers, ndim)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_random); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_rand); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_nwalkers, __pyx_v_ndim}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_nwalkers, __pyx_v_ndim}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_13 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_nwalkers); __Pyx_GIVEREF(__pyx_v_nwalkers); PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_v_nwalkers); __Pyx_INCREF(__pyx_v_ndim); __Pyx_GIVEREF(__pyx_v_ndim); PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_v_ndim); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_points = __pyx_t_1; __pyx_t_1 = 0;
+2417: p0 = prior.ppf(points)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_ppf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_13, __pyx_v_points) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_points); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_p0 = __pyx_t_1; __pyx_t_1 = 0;
2418: else:
+2419: p0 = walker_pos
/*else*/ {
__Pyx_INCREF(__pyx_v_walker_pos);
__pyx_v_p0 = __pyx_v_walker_pos;
}
__pyx_L16:;
2420:
+2421: if sampler is None:
__pyx_t_3 = (__pyx_v_sampler == Py_None);
__pyx_t_6 = (__pyx_t_3 != 0);
if (__pyx_t_6) {
/* … */
goto __pyx_L17;
}
2422: # Start a new MCMC chain.
+2423: if nprocesses > 1:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2423, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 2423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_6) { /* … */ goto __pyx_L18; }
+2424: mcmc_pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_9, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_v_mcmc_pool = __pyx_t_1; __pyx_t_1 = 0;
+2425: sampler = emcee.EnsembleSampler(nwalkers, ndim, self._logposterior_latent,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_emcee); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_EnsembleSampler); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior_latent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_nwalkers); __Pyx_GIVEREF(__pyx_v_nwalkers); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_nwalkers); __Pyx_INCREF(__pyx_v_ndim); __Pyx_GIVEREF(__pyx_v_ndim); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_ndim); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_11); __pyx_t_11 = 0;
+2426: kwargs=logpost_args, pool=mcmc_pool)
__pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_kwargs, __pyx_v_logpost_args) < 0) __PYX_ERR(0, 2426, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pool, __pyx_v_mcmc_pool) < 0) __PYX_ERR(0, 2426, __pyx_L1_error)
2427: else:
+2428: sampler = emcee.EnsembleSampler(nwalkers, ndim, self._logposterior_latent,
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_emcee); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_EnsembleSampler); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logposterior_latent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_v_nwalkers);
__Pyx_GIVEREF(__pyx_v_nwalkers);
PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_nwalkers);
__Pyx_INCREF(__pyx_v_ndim);
__Pyx_GIVEREF(__pyx_v_ndim);
PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_ndim);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_11);
__pyx_t_11 = 0;
/* … */
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF_SET(__pyx_v_sampler, __pyx_t_13);
__pyx_t_13 = 0;
}
__pyx_L18:;
+2429: kwargs=logpost_args)
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_kwargs, __pyx_v_logpost_args) < 0) __PYX_ERR(0, 2429, __pyx_L1_error)
2430:
+2431: sampler.run_mcmc(p0, nsamples, progress=verbose)
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_mcmc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_p0); __Pyx_GIVEREF(__pyx_v_p0); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_p0); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_nsamples); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 2431, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2432: else:
2433: # Continue running an existing MCMC chain.
+2434: if nprocesses > 1:
/*else*/ {
__pyx_t_1 = PyObject_RichCompare(__pyx_v_nprocesses, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2434, __pyx_L1_error)
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 2434, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_6) {
/* … */
goto __pyx_L19;
}
2435: # Restart the pool we closed at the end of the previous run.
+2436: sampler.pool = pathos_mp.ProcessingPool(nprocesses)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pathos_mp); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ProcessingPool); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_9, __pyx_v_nprocesses) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_nprocesses); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, __pyx_t_1) < 0) __PYX_ERR(0, 2436, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2437: elif sampler.pool is not None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_6 != 0); if (__pyx_t_3) { /* … */ } __pyx_L19:;
2438: # If the user decided to not have multiprocessing in a subsequent run, we need
2439: # to reset the pool in the emcee.EnsembleSampler.
+2440: sampler.pool = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_sampler, __pyx_n_s_pool, Py_None) < 0) __PYX_ERR(0, 2440, __pyx_L1_error)
2441:
+2442: sampler.run_mcmc(None, nsamples, progress=verbose)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_run_mcmc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_11, 0, Py_None); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_nsamples); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_progress, __pyx_v_verbose) < 0) __PYX_ERR(0, 2442, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __pyx_L17:;
2443:
+2444: if sampler.pool is not None:
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_3 = (__pyx_t_13 != Py_None); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_6 = (__pyx_t_3 != 0); if (__pyx_t_6) { /* … */ }
+2445: sampler.pool.close()
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_close); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_13 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_11); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2446: sampler.pool.join()
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_join); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_13 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_9); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2447: sampler.pool.clear()
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_pool); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_clear); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_13 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_11); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
2448:
+2449: return sampler
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_sampler); __pyx_r = __pyx_v_sampler; goto __pyx_L0;
2450:
+2451: def latent_infer_mcmc_process_result(self, sampler, obs, fltr, param_priors, init_priors, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_81latent_infer_mcmc_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_80latent_infer_mcmc_process_result[] = "\n Take the sampler generated by `pyross.inference.latent_infer_mcmc` and produce output dictionaries for\n further use in the pyross framework.\n\n Parameters\n ----------\n sampler: emcee.EnsembleSampler\n Output of `mcmc_latent_inference`.\n obs: 2d numpy.array\n fltr: 2d numpy.array\n param_priors: dict\n init_priors: dict\n contactMatrix: callable, optional\n generator: pyross.contactMatrix, optional\n intervention_fun: callable, optional\n flat: bool, optional\n This decides whether to return the samples as for each chain separately (False) or as as a combined\n list (True). Default is True.\n discard: int, optional\n The number of initial samples to discard in each chain (to account for burn-in). Default is 0.\n thin: int, optional\n Thin out the chain by taking only the n-tn element in each chain. Default is 1 (no thinning).\n **catchall_kwargs: dict\n Catches further provided arguments and ignores them.\n\n Returns\n -------\n output_samples: list of dict (if flat=True), or list of list of dict (if flat=False)\n The processed posterior samples.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_81latent_infer_mcmc_process_result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sampler = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_param_priors = 0;
PyObject *__pyx_v_init_priors = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_flat = 0;
PyObject *__pyx_v_discard = 0;
PyObject *__pyx_v_thin = 0;
CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_mcmc_process_result (wrapper)", 0);
__pyx_v_catchall_kwargs = PyDict_New(); if (unlikely(!__pyx_v_catchall_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_catchall_kwargs);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sampler,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_param_priors,&__pyx_n_s_init_priors,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_flat,&__pyx_n_s_discard,&__pyx_n_s_thin,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_XDECREF(__pyx_v_catchall_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_80latent_infer_mcmc_process_result(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sampler, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_param_priors, PyObject *__pyx_v_init_priors, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_flat, PyObject *__pyx_v_discard, PyObject *__pyx_v_thin, CYTHON_UNUSED PyObject *__pyx_v_catchall_kwargs) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_param_prior_names = NULL;
PyObject *__pyx_v_keys = NULL;
PyObject *__pyx_v_param_guess = NULL;
PyObject *__pyx_v_param_stds = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_param_bounds = NULL;
PyObject *__pyx_v_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_prior_names = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_param_length = NULL;
PyObject *__pyx_v_guess = NULL;
PyObject *__pyx_v_stds = NULL;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_v_samples = NULL;
PyObject *__pyx_v_log_posts = NULL;
PyObject *__pyx_v_samples_per_chain = NULL;
PyObject *__pyx_v_nr_chains = NULL;
PyObject *__pyx_v_output_samples = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_l_post = NULL;
PyObject *__pyx_v_weight = NULL;
PyObject *__pyx_v_param_sample = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_init_sample = NULL;
PyObject *__pyx_v_sample_params_dict = NULL;
PyObject *__pyx_v_sample_control_params_dict = NULL;
PyObject *__pyx_v_sample_x0 = NULL;
PyObject *__pyx_v_l_prior = NULL;
PyObject *__pyx_v_l_like = NULL;
PyObject *__pyx_v_output_dict = NULL;
CYTHON_UNUSED PyObject *__pyx_8genexpr3__pyx_v__ = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_mcmc_process_result", 0);
__Pyx_INCREF(__pyx_v_obs);
__Pyx_INCREF(__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_mcmc_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_param_prior_names);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_XDECREF(__pyx_v_param_guess);
__Pyx_XDECREF(__pyx_v_param_stds);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_param_bounds);
__Pyx_XDECREF(__pyx_v_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_prior_names);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_param_length);
__Pyx_XDECREF(__pyx_v_guess);
__Pyx_XDECREF(__pyx_v_stds);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_v_samples);
__Pyx_XDECREF(__pyx_v_log_posts);
__Pyx_XDECREF(__pyx_v_samples_per_chain);
__Pyx_XDECREF(__pyx_v_nr_chains);
__Pyx_XDECREF(__pyx_v_output_samples);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_l_post);
__Pyx_XDECREF(__pyx_v_weight);
__Pyx_XDECREF(__pyx_v_param_sample);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_init_sample);
__Pyx_XDECREF(__pyx_v_sample_params_dict);
__Pyx_XDECREF(__pyx_v_sample_control_params_dict);
__Pyx_XDECREF(__pyx_v_sample_x0);
__Pyx_XDECREF(__pyx_v_l_prior);
__Pyx_XDECREF(__pyx_v_l_like);
__Pyx_XDECREF(__pyx_v_output_dict);
__Pyx_XDECREF(__pyx_8genexpr3__pyx_v__);
__Pyx_XDECREF(__pyx_v_obs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2452: generator=None, intervention_fun=None, flat=True, discard=0, thin=1,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_True);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_1);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sampler)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc_process_result", 0, 5, 11, 1); __PYX_ERR(0, 2451, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc_process_result", 0, 5, 11, 2); __PYX_ERR(0, 2451, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc_process_result", 0, 5, 11, 3); __PYX_ERR(0, 2451, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc_process_result", 0, 5, 11, 4); __PYX_ERR(0, 2451, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_discard);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thin);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_catchall_kwargs, values, pos_args, "latent_infer_mcmc_process_result") < 0)) __PYX_ERR(0, 2451, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_sampler = values[0];
__pyx_v_obs = values[1];
__pyx_v_fltr = values[2];
__pyx_v_param_priors = values[3];
__pyx_v_init_priors = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_flat = values[8];
__pyx_v_discard = values[9];
__pyx_v_thin = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_mcmc_process_result", 0, 5, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2451, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_catchall_kwargs); __pyx_v_catchall_kwargs = 0;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_mcmc_process_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_80latent_infer_mcmc_process_result(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sampler, __pyx_v_obs, __pyx_v_fltr, __pyx_v_param_priors, __pyx_v_init_priors, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_flat, __pyx_v_discard, __pyx_v_thin, __pyx_v_catchall_kwargs);
2453: **catchall_kwargs):
2454: """
2455: Take the sampler generated by `pyross.inference.latent_infer_mcmc` and produce output dictionaries for
2456: further use in the pyross framework.
2457:
2458: Parameters
2459: ----------
2460: sampler: emcee.EnsembleSampler
2461: Output of `mcmc_latent_inference`.
2462: obs: 2d numpy.array
2463: fltr: 2d numpy.array
2464: param_priors: dict
2465: init_priors: dict
2466: contactMatrix: callable, optional
2467: generator: pyross.contactMatrix, optional
2468: intervention_fun: callable, optional
2469: flat: bool, optional
2470: This decides whether to return the samples as for each chain separately (False) or as as a combined
2471: list (True). Default is True.
2472: discard: int, optional
2473: The number of initial samples to discard in each chain (to account for burn-in). Default is 0.
2474: thin: int, optional
2475: Thin out the chain by taking only the n-tn element in each chain. Default is 1 (no thinning).
2476: **catchall_kwargs: dict
2477: Catches further provided arguments and ignores them.
2478:
2479: Returns
2480: -------
2481: output_samples: list of dict (if flat=True), or list of list of dict (if flat=False)
2482: The processed posterior samples.
2483: """
2484: # Sanity checks of the inputs
+2485: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2486:
2487: # Process fltr and obs
+2488: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2488, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 2488, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2488, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, __pyx_t_3); __pyx_t_3 = 0; __pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
2489:
2490: # Read in parameter priors
+2491: param_prior_names, keys, param_guess, param_stds, _, _, param_bounds, param_guess_range, \
__pyx_v_param_prior_names = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_keys = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_param_guess = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_param_stds = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v__ = __pyx_t_8;
__pyx_t_8 = 0;
__Pyx_DECREF_SET(__pyx_v__, __pyx_t_9);
__pyx_t_9 = 0;
__pyx_v_param_bounds = __pyx_t_10;
__pyx_t_10 = 0;
__pyx_v_param_guess_range = __pyx_t_11;
__pyx_t_11 = 0;
__pyx_v_is_scale_parameter = __pyx_t_12;
__pyx_t_12 = 0;
__pyx_v_scaled_param_guesses = __pyx_t_13;
__pyx_t_13 = 0;
2492: is_scale_parameter, scaled_param_guesses \
+2493: = pyross.utils.parse_param_prior_dict(param_priors, self.M, check_length=(not self.param_mapping_enabled))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_param_prior_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_priors); __Pyx_GIVEREF(__pyx_v_param_priors); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_priors); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyBool_FromLong((!(__pyx_v_self->param_mapping_enabled != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_check_length, __pyx_t_2) < 0) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 10)) { if (size > 10) __Pyx_RaiseTooManyValuesError(10); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2491, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 7); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 8); __pyx_t_13 = PyTuple_GET_ITEM(sequence, 9); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); __pyx_t_10 = PyList_GET_ITEM(sequence, 6); __pyx_t_11 = PyList_GET_ITEM(sequence, 7); __pyx_t_12 = PyList_GET_ITEM(sequence, 8); __pyx_t_13 = PyList_GET_ITEM(sequence, 9); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); #else { Py_ssize_t i; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; for (i=0; i < 10; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2491, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[10] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_1,&__pyx_t_6,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13}; __pyx_t_14 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_14)->tp_iternext; for (index=0; index < 10; index++) { PyObject* item = __pyx_t_7(__pyx_t_14); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_14), 10) < 0) __PYX_ERR(0, 2491, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2491, __pyx_L1_error) __pyx_L6_unpacking_done:; }
2494:
2495: # Read in initial conditions priors
+2496: init_prior_names, init_guess, init_stds, _, _,init_bounds, init_flags, init_fltrs \
__pyx_v_init_prior_names = __pyx_t_13; __pyx_t_13 = 0; __pyx_v_init_guess = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_init_stds = __pyx_t_11; __pyx_t_11 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_10); __pyx_t_10 = 0; __pyx_v_init_bounds = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_init_flags = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_init_fltrs = __pyx_t_1; __pyx_t_1 = 0;
+2497: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pyross); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_utils); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_15 = PyObject_Length(__pyx_v_obs0); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2497, __pyx_L1_error) __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_init_priors, __pyx_t_12, __pyx_t_11}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2496, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_13 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); __pyx_t_11 = PyList_GET_ITEM(sequence, 2); __pyx_t_12 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); __pyx_t_6 = PyList_GET_ITEM(sequence, 6); __pyx_t_1 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2496, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_13,&__pyx_t_9,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_8,&__pyx_t_6,&__pyx_t_1}; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_7(__pyx_t_3); if (unlikely(!item)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 8) < 0) __PYX_ERR(0, 2496, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2496, __pyx_L1_error) __pyx_L8_unpacking_done:; }
2498:
2499: # Concatenate the flattend parameter guess with init guess
+2500: param_length = param_guess.shape[0]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_guess, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_param_length = __pyx_t_1; __pyx_t_1 = 0;
+2501: guess = np.concatenate([param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_guess); __Pyx_GIVEREF(__pyx_v_param_guess); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_guess); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_guess = __pyx_t_1; __pyx_t_1 = 0;
+2502: stds = np.concatenate([param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_param_stds); __Pyx_GIVEREF(__pyx_v_param_stds); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_init_stds); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_stds = __pyx_t_1; __pyx_t_1 = 0;
+2503: bounds = np.concatenate([param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_param_bounds); __Pyx_GIVEREF(__pyx_v_param_bounds); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_bounds); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2503, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
2504:
+2505: prior = Prior(param_prior_names+init_prior_names, bounds, guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Prior); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyNumber_Add(__pyx_v_param_prior_names, __pyx_v_init_prior_names); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_t_10, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_t_10, __pyx_v_bounds, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_4, __pyx_v_stds); __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_prior = __pyx_t_1; __pyx_t_1 = 0;
2506:
+2507: samples = sampler.get_chain(flat=flat, thin=thin, discard=discard)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_get_chain); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 2507, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 2507, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 2507, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_samples = __pyx_t_8; __pyx_t_8 = 0;
+2508: log_posts = sampler.get_log_prob(flat=flat, thin=thin, discard=discard)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_sampler, __pyx_n_s_get_log_prob); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_flat, __pyx_v_flat) < 0) __PYX_ERR(0, 2508, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_thin, __pyx_v_thin) < 0) __PYX_ERR(0, 2508, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_discard, __pyx_v_discard) < 0) __PYX_ERR(0, 2508, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_log_posts = __pyx_t_1; __pyx_t_1 = 0;
+2509: samples_per_chain = samples.shape[0]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_samples_per_chain = __pyx_t_6; __pyx_t_6 = 0;
+2510: nr_chains = 1 if flat else samples.shape[1]
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2510, __pyx_L1_error) if (__pyx_t_16) { __Pyx_INCREF(__pyx_int_1); __pyx_t_6 = __pyx_int_1; } else { __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = __pyx_t_8; __pyx_t_8 = 0; } __pyx_v_nr_chains = __pyx_t_6; __pyx_t_6 = 0;
+2511: if flat:
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2511, __pyx_L1_error) if (__pyx_t_16) { /* … */ goto __pyx_L9; }
+2512: output_samples = []
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_output_samples = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
2513: else:
+2514: output_samples = [[] for _ in nr_chains]
/*else*/ {
{ /* enter inner scope */
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_6);
if (likely(PyList_CheckExact(__pyx_v_nr_chains)) || PyTuple_CheckExact(__pyx_v_nr_chains)) {
__pyx_t_8 = __pyx_v_nr_chains; __Pyx_INCREF(__pyx_t_8); __pyx_t_15 = 0;
__pyx_t_17 = NULL;
} else {
__pyx_t_15 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_nr_chains); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_17 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2514, __pyx_L12_error)
}
for (;;) {
if (likely(!__pyx_t_17)) {
if (likely(PyList_CheckExact(__pyx_t_8))) {
if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 2514, __pyx_L12_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 2514, __pyx_L12_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
__pyx_t_1 = __pyx_t_17(__pyx_t_8);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 2514, __pyx_L12_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v__, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 2514, __pyx_L12_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_8genexpr3__pyx_v__); __pyx_8genexpr3__pyx_v__ = 0;
goto __pyx_L15_exit_scope;
__pyx_L12_error:;
__Pyx_XDECREF(__pyx_8genexpr3__pyx_v__); __pyx_8genexpr3__pyx_v__ = 0;
goto __pyx_L1_error;
__pyx_L15_exit_scope:;
} /* exit inner scope */
__pyx_v_output_samples = ((PyObject*)__pyx_t_6);
__pyx_t_6 = 0;
}
__pyx_L9:;
2515:
+2516: for i in range(samples_per_chain):
__pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_samples_per_chain); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) { __pyx_t_8 = __pyx_t_6; __Pyx_INCREF(__pyx_t_8); __pyx_t_15 = 0; __pyx_t_17 = NULL; } else { __pyx_t_15 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_17 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2516, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (likely(!__pyx_t_17)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_6); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 2516, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_6); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 2516, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_17(__pyx_t_8); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2516, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_6); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2517: for j in range(nr_chains):
__pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nr_chains); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) { __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_18 = 0; __pyx_t_19 = NULL; } else { __pyx_t_18 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_19 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2517, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (likely(!__pyx_t_19)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_18); __Pyx_INCREF(__pyx_t_6); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2517, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_18); __Pyx_INCREF(__pyx_t_6); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2517, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_19(__pyx_t_1); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2517, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_6); } __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2518: if flat:
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2518, __pyx_L1_error) if (__pyx_t_16) { /* … */ goto __pyx_L20; }
+2519: sample = samples[i,:]
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_i); __Pyx_INCREF(__pyx_slice_); __Pyx_GIVEREF(__pyx_slice_); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice_); __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_samples, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_10); __pyx_t_10 = 0;
+2520: l_post = log_posts[i]
__pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_log_posts, __pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_10); __pyx_t_10 = 0;
2521: else:
+2522: sample = samples[i, j, :]
/*else*/ {
__pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2522, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_v_i);
__Pyx_GIVEREF(__pyx_v_i);
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_i);
__Pyx_INCREF(__pyx_v_j);
__Pyx_GIVEREF(__pyx_v_j);
PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_j);
__Pyx_INCREF(__pyx_slice_);
__Pyx_GIVEREF(__pyx_slice_);
PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_slice_);
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_samples, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2522, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_6);
__pyx_t_6 = 0;
+2523: l_post = log_posts[i]
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_log_posts, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_l_post, __pyx_t_6); __pyx_t_6 = 0; } __pyx_L20:;
+2524: weight = 1.0 / (samples_per_chain * nr_chains)
__pyx_t_6 = PyNumber_Multiply(__pyx_v_samples_per_chain, __pyx_v_nr_chains); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_6, 1.0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_weight, __pyx_t_10); __pyx_t_10 = 0;
+2525: param_sample = sample[:param_length]
__pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_sample, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_param_sample, __pyx_t_10); __pyx_t_10 = 0;
+2526: orig_params = pyross.utils.unflatten_parameters(param_sample, param_guess_range,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2527: is_scale_parameter, scaled_param_guesses)
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_sample, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2526, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_10);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_sample, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2526, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_10);
} else
#endif
{
__pyx_t_12 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2526, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_param_sample);
__Pyx_GIVEREF(__pyx_v_param_sample);
PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_4, __pyx_v_param_sample);
__Pyx_INCREF(__pyx_v_param_guess_range);
__Pyx_GIVEREF(__pyx_v_param_guess_range);
PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_4, __pyx_v_param_guess_range);
__Pyx_INCREF(__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_4, __pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_v_scaled_param_guesses);
__Pyx_GIVEREF(__pyx_v_scaled_param_guesses);
PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_4, __pyx_v_scaled_param_guesses);
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2526, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF_SET(__pyx_v_orig_params, __pyx_t_10);
__pyx_t_10 = 0;
+2528: init_sample = sample[param_length:]
__pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_sample, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_init_sample, __pyx_t_10); __pyx_t_10 = 0;
2529:
+2530: sample_params_dict, sample_control_params_dict = self.fill_params_dict(keys, orig_params, return_additional_params=True)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_orig_params); __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2530, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_12 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_12 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext; index = 0; __pyx_t_12 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_12)) goto __pyx_L21_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L21_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L22_unpacking_done; __pyx_L21_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_L22_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_sample_params_dict, __pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_sample_control_params_dict, __pyx_t_6); __pyx_t_6 = 0;
+2531: self.set_params(sample_params_dict)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_12, __pyx_v_sample_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_sample_params_dict); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2532:
+2533: if generator is not None:
__pyx_t_16 = (__pyx_v_generator != Py_None);
__pyx_t_20 = (__pyx_t_16 != 0);
if (__pyx_t_20) {
/* … */
}
+2534: if intervention_fun is None:
__pyx_t_20 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_16 = (__pyx_t_20 != 0);
if (__pyx_t_16) {
/* … */
goto __pyx_L24;
}
+2535: self.contactMatrix = generator.constant_contactMatrix(**sample_control_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_sample_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 2535, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_sample_control_params_dict))) { __pyx_t_6 = PyDict_Copy(__pyx_v_sample_control_params_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } else { __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_sample_control_params_dict, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_12); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_12; __pyx_t_12 = 0;
2536: else:
+2537: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **sample_control_params_dict)
/*else*/ {
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_sample_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2537, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_sample_control_params_dict))) {
__pyx_t_2 = PyDict_Copy(__pyx_v_sample_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
} else {
__pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_sample_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_10;
__pyx_t_10 = 0;
}
__pyx_L24:;
2538:
+2539: sample_x0 = self._construct_inits(init_sample, init_flags, init_fltrs, obs0, fltr[0])
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_12, __pyx_v_init_sample, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_6}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_12, __pyx_v_init_sample, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_6}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_11 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_INCREF(__pyx_v_init_sample); __Pyx_GIVEREF(__pyx_v_init_sample); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_v_init_sample); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_4, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_4, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_4, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_sample_x0, __pyx_t_10); __pyx_t_10 = 0;
+2540: l_prior = np.sum(prior.logpdf(sample))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_prior, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_12, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_10 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF_SET(__pyx_v_l_prior, __pyx_t_10); __pyx_t_10 = 0;
+2541: l_like = l_post - l_prior
__pyx_t_10 = PyNumber_Subtract(__pyx_v_l_post, __pyx_v_l_prior); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF_SET(__pyx_v_l_like, __pyx_t_10); __pyx_t_10 = 0;
2542: output_dict = {
+2543: 'params_dict':sample_params_dict, 'x0':sample_x0, 'flat_params':sample,
__pyx_t_10 = __Pyx_PyDict_NewPresized(15); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_params_dict, __pyx_v_sample_params_dict) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_x0, __pyx_v_sample_x0) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_flat_params, __pyx_v_sample) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2544: 'log_posterior':l_post, 'log_prior':l_prior, 'log_likelihood':l_like,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_posterior, __pyx_v_l_post) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_prior, __pyx_v_l_prior) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_log_likelihood, __pyx_v_l_like) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2545: 'weight':weight, 'param_keys': keys, 'param_guess_range': param_guess_range,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_weight, __pyx_v_weight) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_param_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_param_guess_range, __pyx_v_param_guess_range) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2546: 'is_scale_parameter':is_scale_parameter, 'param_length':param_length,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_param_length, __pyx_v_param_length) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2547: 'scaled_param_guesses':scaled_param_guesses,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2548: 'init_flags': init_flags, 'init_fltrs': init_fltrs,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_init_flags, __pyx_v_init_flags) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_init_fltrs, __pyx_v_init_fltrs) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
+2549: 'prior':prior
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_prior, __pyx_v_prior) < 0) __PYX_ERR(0, 2543, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_output_dict, ((PyObject*)__pyx_t_10)); __pyx_t_10 = 0;
2550: }
2551:
+2552: if sample_control_params_dict != {}:
__pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyObject_RichCompare(__pyx_v_sample_control_params_dict, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_16) { /* … */ }
+2553: output_dict['control_params_dict'] = sample_control_params_dict
if (unlikely(PyDict_SetItem(__pyx_v_output_dict, __pyx_n_u_control_params_dict, __pyx_v_sample_control_params_dict) < 0)) __PYX_ERR(0, 2553, __pyx_L1_error)
2554:
+2555: if flat:
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_flat); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 2555, __pyx_L1_error) if (__pyx_t_16) { /* … */ goto __pyx_L26; }
+2556: output_samples.append(output_dict)
__pyx_t_21 = __Pyx_PyList_Append(__pyx_v_output_samples, __pyx_v_output_dict); if (unlikely(__pyx_t_21 == ((int)-1))) __PYX_ERR(0, 2556, __pyx_L1_error)
2557: else:
+2558: output_samples[j].append(output_dict)
/*else*/ {
__pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_output_samples, __pyx_v_j); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_21 = __Pyx_PyObject_Append(__pyx_t_11, __pyx_v_output_dict); if (unlikely(__pyx_t_21 == ((int)-1))) __PYX_ERR(0, 2558, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
__pyx_L26:;
2559:
+2560: return output_samples
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_samples); __pyx_r = __pyx_v_output_samples; goto __pyx_L0;
2561:
+2562: def _latent_mean(self, params, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_83_latent_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_82_latent_mean[] = "Objective function for differentiation call in latent_FIM and latent_FIM_det.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_83_latent_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_param_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_param_length = 0;
CYTHON_UNUSED PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_init_flags = 0;
PyObject *__pyx_v_init_fltrs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_mean (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_param_keys,&__pyx_n_s_param_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_param_length,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_obs0,&__pyx_n_s_inter_steps,&__pyx_n_s_init_flags,&__pyx_n_s_init_fltrs,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_82_latent_mean(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_param_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_param_length, CYTHON_UNUSED PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_obs0, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_init_flags, PyObject *__pyx_v_init_fltrs) {
PyObject *__pyx_v_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_init_estimates = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_fltr_ = NULL;
PyObject *__pyx_v_Nf = NULL;
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_xm_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_mean", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_init_estimates);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_fltr_);
__Pyx_XDECREF(__pyx_v_Nf);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_xm_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2563: generator=None, intervention_fun=None,
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
+2564: param_keys=None,
values[4] = ((PyObject *)Py_None);
+2565: param_guess_range=None, is_scale_parameter=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+2566: scaled_param_guesses=None, param_length=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
+2567: obs=None, fltr=None, Tf=None, obs0=None,
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
+2568: inter_steps=None,
values[13] = ((PyObject *)Py_None);
+2569: init_flags=None, init_fltrs=None):
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_length);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_flags);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltrs);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_latent_mean") < 0)) __PYX_ERR(0, 2562, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_contactMatrix = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_param_keys = values[4];
__pyx_v_param_guess_range = values[5];
__pyx_v_is_scale_parameter = values[6];
__pyx_v_scaled_param_guesses = values[7];
__pyx_v_param_length = values[8];
__pyx_v_obs = values[9];
__pyx_v_fltr = values[10];
__pyx_v_Tf = values[11];
__pyx_v_obs0 = values[12];
__pyx_v_inter_steps = values[13];
__pyx_v_init_flags = values[14];
__pyx_v_init_fltrs = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_mean", 0, 1, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2562, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_82_latent_mean(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_param_keys, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_param_length, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_obs0, __pyx_v_inter_steps, __pyx_v_init_flags, __pyx_v_init_fltrs);
2570: """Objective function for differentiation call in latent_FIM and latent_FIM_det."""
+2571: param_estimates = np.copy(params[:param_length])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_param_estimates = __pyx_t_1; __pyx_t_1 = 0;
2572:
+2573: orig_params = pyross.utils.unflatten_parameters(param_estimates,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2574: param_guess_range,
2575: is_scale_parameter,
+2576: scaled_param_guesses)
__pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_param_estimates); __Pyx_GIVEREF(__pyx_v_param_estimates); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_param_estimates); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_5, __pyx_v_scaled_param_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
2577:
+2578: init_estimates = np.copy(params[param_length:])
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_init_estimates = __pyx_t_1; __pyx_t_1 = 0;
2579:
+2580: map_params_dict, map_control_params_dict = self.fill_params_dict(param_keys, orig_params, return_additional_params=True)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_orig_params); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 2580, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2580, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_1), 2) < 0) __PYX_ERR(0, 2580, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2580, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_map_control_params_dict = __pyx_t_4; __pyx_t_4 = 0;
+2581: self.set_params(map_params_dict)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2582:
+2583: if generator is not None:
__pyx_t_7 = (__pyx_v_generator != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
}
+2584: if intervention_fun is None:
__pyx_t_8 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_7 = (__pyx_t_8 != 0);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
+2585: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 2585, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_4 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { __pyx_t_4 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_3; __pyx_t_3 = 0;
2586: else:
+2587: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2587, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_2 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
} else {
__pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L6:;
2588:
+2589: fltr_ = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fltr_ = __pyx_t_1; __pyx_t_1 = 0;
+2590: Nf=fltr_.shape[0]+1
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fltr_, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_Nf = __pyx_t_1; __pyx_t_1 = 0;
+2591: full_fltr = sparse.block_diag(fltr_)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sparse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_v_fltr_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_fltr_); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_full_fltr = __pyx_t_1; __pyx_t_1 = 0;
2592:
+2593: x0 = self._construct_inits(init_estimates, init_flags, init_fltrs, obs0, fltr[0])
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_9 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_init_estimates); __Pyx_GIVEREF(__pyx_v_init_estimates); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_v_init_estimates); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_5, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_5, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_5, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
2594:
+2595: if inter_steps:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_inter_steps); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2595, __pyx_L1_error) if (__pyx_t_7) { /* … */ goto __pyx_L7; }
+2596: x0 = np.multiply(x0, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_multiply); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_x0, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_x0, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_x0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF_SET(__pyx_v_x0, __pyx_t_1); __pyx_t_1 = 0;
+2597: xm = pyross.utils.forward_euler_integration(self._rhs0, x0, 0, Tf, Nf, inter_steps)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pyross); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[7] = {__pyx_t_4, __pyx_t_3, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 6+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[7] = {__pyx_t_4, __pyx_t_3, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 6+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_2 = PyTuple_New(6+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_x0); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_5, __pyx_int_0); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_5, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_2, 4+__pyx_t_5, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_2, 5+__pyx_t_5, __pyx_v_inter_steps); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_xm = __pyx_t_1; __pyx_t_1 = 0;
+2598: xm = xm[::inter_steps]
__pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_v_inter_steps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_xm, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_9); __pyx_t_9 = 0;
+2599: xm = np.divide(xm, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_divide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_xm, __pyx_t_1}; __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_xm, __pyx_t_1}; __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_xm); __Pyx_GIVEREF(__pyx_v_xm); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_xm); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_9); __pyx_t_9 = 0;
2600: else:
+2601: xm = self.integrate(x0, 0, Tf, Nf)
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2601, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf};
__pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2601, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_x0, __pyx_int_0, __pyx_v_Tf, __pyx_v_Nf};
__pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2601, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
{
__pyx_t_1 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2601, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_x0);
__Pyx_GIVEREF(__pyx_v_x0);
PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_5, __pyx_v_x0);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_5, __pyx_int_0);
__Pyx_INCREF(__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_v_Tf);
PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_5, __pyx_v_Tf);
__Pyx_INCREF(__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_v_Nf);
PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_5, __pyx_v_Nf);
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2601, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_xm = __pyx_t_9;
__pyx_t_9 = 0;
}
__pyx_L7:;
+2602: xm_red = full_fltr@(np.ravel(xm[1:]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_xm, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_xm_red = __pyx_t_1; __pyx_t_1 = 0;
+2603: return xm_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_xm_red); __pyx_r = __pyx_v_xm_red; goto __pyx_L0;
2604:
+2605: def _latent_cov(self, params, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_85_latent_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_84_latent_cov[] = "Objective function for differentiation call in latent_FIM.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_85_latent_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_param_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_param_length = 0;
CYTHON_UNUSED PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_init_flags = 0;
PyObject *__pyx_v_init_fltrs = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_cov (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_param_keys,&__pyx_n_s_param_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_param_length,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_obs0,&__pyx_n_s_inter_steps,&__pyx_n_s_init_flags,&__pyx_n_s_init_fltrs,&__pyx_n_s_tangent,0};
PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_84_latent_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_param_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_param_length, CYTHON_UNUSED PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_obs0, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_init_flags, PyObject *__pyx_v_init_fltrs, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_init_estimates = NULL;
PyObject *__pyx_v_map_params_dict = NULL;
PyObject *__pyx_v_map_control_params_dict = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_fltr_ = NULL;
PyObject *__pyx_v_Nf = NULL;
PyObject *__pyx_v_full_fltr = NULL;
CYTHON_UNUSED PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_full_cov = NULL;
PyObject *__pyx_v_cov_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_cov", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_init_estimates);
__Pyx_XDECREF(__pyx_v_map_params_dict);
__Pyx_XDECREF(__pyx_v_map_control_params_dict);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_fltr_);
__Pyx_XDECREF(__pyx_v_Nf);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2606: generator=None, intervention_fun=None,
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
+2607: param_keys=None,
values[4] = ((PyObject *)Py_None);
+2608: param_guess_range=None, is_scale_parameter=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+2609: scaled_param_guesses=None, param_length=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
+2610: obs=None, fltr=None, Tf=None, obs0=None,
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
+2611: inter_steps=None,
values[13] = ((PyObject *)Py_None);
+2612: init_flags=None, init_fltrs=None, tangent=False):
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
values[16] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_length);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_flags);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltrs);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[16] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_latent_cov") < 0)) __PYX_ERR(0, 2605, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_contactMatrix = values[1];
__pyx_v_generator = values[2];
__pyx_v_intervention_fun = values[3];
__pyx_v_param_keys = values[4];
__pyx_v_param_guess_range = values[5];
__pyx_v_is_scale_parameter = values[6];
__pyx_v_scaled_param_guesses = values[7];
__pyx_v_param_length = values[8];
__pyx_v_obs = values[9];
__pyx_v_fltr = values[10];
__pyx_v_Tf = values[11];
__pyx_v_obs0 = values[12];
__pyx_v_inter_steps = values[13];
__pyx_v_init_flags = values[14];
__pyx_v_init_fltrs = values[15];
__pyx_v_tangent = values[16];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_cov", 0, 1, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2605, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_84_latent_cov(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_param_keys, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_param_length, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_obs0, __pyx_v_inter_steps, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_tangent);
2613: """Objective function for differentiation call in latent_FIM."""
+2614: param_estimates = np.copy(params[:param_length])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_param_length, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_param_estimates = __pyx_t_1; __pyx_t_1 = 0;
2615:
+2616: orig_params = pyross.utils.unflatten_parameters(param_estimates,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2617: param_guess_range,
2618: is_scale_parameter,
+2619: scaled_param_guesses)
__pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_param_estimates, __pyx_v_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_param_estimates); __Pyx_GIVEREF(__pyx_v_param_estimates); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_param_estimates); __Pyx_INCREF(__pyx_v_param_guess_range); __Pyx_GIVEREF(__pyx_v_param_guess_range); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_5, __pyx_v_scaled_param_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
2620:
+2621: init_estimates = np.copy(params[param_length:])
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, &__pyx_v_param_length, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_init_estimates = __pyx_t_1; __pyx_t_1 = 0;
2622:
+2623: map_params_dict, map_control_params_dict = self.fill_params_dict(param_keys, orig_params, return_additional_params=True)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_orig_params); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return_additional_params, Py_True) < 0) __PYX_ERR(0, 2623, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2623, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_1), 2) < 0) __PYX_ERR(0, 2623, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2623, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_map_params_dict = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_map_control_params_dict = __pyx_t_4; __pyx_t_4 = 0;
+2624: self.set_params(map_params_dict)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_map_params_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_map_params_dict); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2625:
+2626: if generator is not None:
__pyx_t_7 = (__pyx_v_generator != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
}
+2627: if intervention_fun is None:
__pyx_t_8 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_7 = (__pyx_t_8 != 0);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
+2628: self.contactMatrix = generator.constant_contactMatrix(**map_control_params_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_map_control_params_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 2628, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) { __pyx_t_4 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { __pyx_t_4 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_t_3; __pyx_t_3 = 0;
2629: else:
+2630: self.contactMatrix = generator.intervention_custom_temporal(intervention_fun, **map_control_params_dict)
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2630, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2630, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_intervention_fun);
if (unlikely(__pyx_v_map_control_params_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2630, __pyx_L1_error)
}
if (likely(PyDict_CheckExact(__pyx_v_map_control_params_dict))) {
__pyx_t_2 = PyDict_Copy(__pyx_v_map_control_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2630, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
} else {
__pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_map_control_params_dict, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2630, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2630, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->contactMatrix);
__Pyx_DECREF(__pyx_v_self->contactMatrix);
__pyx_v_self->contactMatrix = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L6:;
2631:
+2632: x0 = self._construct_inits(init_estimates, init_flags, init_fltrs, obs0, fltr[0])
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_init_estimates, __pyx_v_init_flags, __pyx_v_init_fltrs, __pyx_v_obs0, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_9 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_init_estimates); __Pyx_GIVEREF(__pyx_v_init_estimates); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_v_init_estimates); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_5, __pyx_v_init_fltrs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_5, __pyx_v_obs0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_5, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
+2633: fltr_ = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fltr_ = __pyx_t_1; __pyx_t_1 = 0;
+2634: Nf=fltr_.shape[0]+1
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fltr_, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_Nf = __pyx_t_1; __pyx_t_1 = 0;
+2635: full_fltr = sparse.block_diag(fltr_)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sparse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_v_fltr_) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_fltr_); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_full_fltr = __pyx_t_1; __pyx_t_1 = 0;
2636:
+2637: if tangent:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 2637, __pyx_L1_error) if (__pyx_t_7) { /* … */ goto __pyx_L7; }
+2638: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf,
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 2638, __pyx_L1_error) __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L1_error) __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L1_error) /* … */ __pyx_t_14.__pyx_n = 1; __pyx_t_14.inter_steps = __pyx_t_13; __pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_t_10, __pyx_t_11, __pyx_t_12, 0, &__pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2638, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_9)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_4), 2) < 0) __PYX_ERR(0, 2638, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2638, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_v_xm = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_full_cov = __pyx_t_2; __pyx_t_2 = 0;
+2639: inter_steps)
__pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2639, __pyx_L1_error)
2640: else:
+2641: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, inter_steps)
/*else*/ {
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_inter_steps); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_t_15.__pyx_n = 1;
__pyx_t_15.inter_steps = __pyx_t_12;
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_t_10, __pyx_t_11, __pyx_t_13, 0, &__pyx_t_15); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2641, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__pyx_t_10.memview = NULL;
__pyx_t_10.data = NULL;
if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 2641, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_2 = PyList_GET_ITEM(sequence, 0);
__pyx_t_9 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx_t_9);
#else
__pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2641, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2641, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2641, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext;
index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L10_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
index = 1; __pyx_t_9 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_9)) goto __pyx_L10_unpacking_failed;
__Pyx_GOTREF(__pyx_t_9);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_4), 2) < 0) __PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_t_6 = NULL;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L11_unpacking_done;
__pyx_L10_unpacking_failed:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_6 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 2641, __pyx_L1_error)
__pyx_L11_unpacking_done:;
}
__pyx_v_xm = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_v_full_cov = __pyx_t_9;
__pyx_t_9 = 0;
}
__pyx_L7:;
2642:
+2643: cov_red = full_fltr@full_cov@np.transpose(full_fltr)
__pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_v_full_cov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_transpose); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_9 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_full_fltr); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_cov_red = __pyx_t_4; __pyx_t_4 = 0;
+2644: return cov_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_cov_red); __pyx_r = __pyx_v_cov_red; goto __pyx_L0;
2645:
+2646: def latent_FIM(self, obs, fltr, Tf, infer_result, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_87latent_FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_86latent_FIM[] = "\n Computes the Fisher Information Matrix (FIM) of the stochastic model for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix with \n respect to the parameters"". Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. \n If not specified,\n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will \n make computations slower. Setting `inter_steps=0` will fall back to the method accessible via \n `det_method` for the deterministic integration. We have found that forward Euler is generally \n slower, but more stable for derivatives with respect to parameters than the variable step \n size integrators used elsewhere in pyross. Default is 100.\n Returns\n -------\n FIM: 2d numpy.array\n The Fisher Information Matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_87latent_FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_FIM (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_inter_steps,0};
PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_86latent_FIM(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_inter_steps) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *__pyx_cur_scope;
PyObject *__pyx_v_infer_result_loc = NULL;
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_mean = 0;
PyObject *__pyx_v_covariance = 0;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_invcov = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_v_dcov = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_t1 = NULL;
PyObject *__pyx_v_t2 = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_FIM", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_3_latent_FIM(__pyx_ptype_6pyross_9inference___pyx_scope_struct_3_latent_FIM, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 2646, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_obs = __pyx_v_obs;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs);
__pyx_cur_scope->__pyx_v_fltr = __pyx_v_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_generator = __pyx_v_generator;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator);
__pyx_cur_scope->__pyx_v_intervention_fun = __pyx_v_intervention_fun;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
__pyx_cur_scope->__pyx_v_inter_steps = __pyx_v_inter_steps;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_infer_result_loc);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_covariance);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_FIM);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XDECREF(__pyx_v_dcov);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_t1);
__Pyx_XDECREF(__pyx_v_t2);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM {
PyObject_HEAD
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_fltr;
PyObject *__pyx_v_generator;
PyObject *__pyx_v_inter_steps;
PyObject *__pyx_v_intervention_fun;
PyObject *__pyx_v_kwargs;
PyObject *__pyx_v_obs;
PyObject *__pyx_v_obs0;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
};
+2647: generator=None,
values[5] = ((PyObject *)Py_None);
+2648: intervention_fun=None, tangent=False, eps=None,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_False);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM", 0, 4, 10, 1); __PYX_ERR(0, 2646, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM", 0, 4, 10, 2); __PYX_ERR(0, 2646, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM", 0, 4, 10, 3); __PYX_ERR(0, 2646, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_FIM") < 0)) __PYX_ERR(0, 2646, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_contactMatrix = values[4];
__pyx_v_generator = values[5];
__pyx_v_intervention_fun = values[6];
__pyx_v_tangent = values[7];
__pyx_v_eps = values[8];
__pyx_v_inter_steps = values[9];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_FIM", 0, 4, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2646, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_86latent_FIM(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_inter_steps);
2649: inter_steps=100):
2650: """
2651: Computes the Fisher Information Matrix (FIM) of the stochastic model for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.
2652:
2653: Parameters
2654: ----------
2655: obs: np.array
2656: The partially observed trajectory.
2657: fltr: 2d np.array
2658: The filter for the observation such that
2659: :math:`F_{ij} x_j (t) = obs_i(t)`
2660: Tf: float
2661: Total time of the trajectory
2662: infer_result: dict
2663: Dictionary returned by latent_infer
2664: contactMatrix: callable, optional
2665: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
2666: Either a contactMatrix or a generator must be specified.
2667: generator: pyross.contactMatrix, optional
2668: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
2669: parameters.
2670: Either a contactMatrix or a generator must be specified.
2671: intervention_fun: callable, optional
2672: The calling signature is `intervention_func(t, **kwargs)`,
2673: where t is time and kwargs are other keyword arguments for the function.
2674: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
2675: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
2676: If not set, assume intervention that's constant in time.
2677: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
2678: tangent: bool, optional
2679: Set to True to use tangent space inference. Default is False.
2680: eps: float or numpy.array, optional
2681: Step size for numerical differentiation of the process mean and its full covariance matrix with
2682: respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
2683: If not specified,
2684:
2685: .. code-block:: python
2686:
2687: eps = 100*infer_result['flat_params']
2688: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
2689: infer_result['log_likelihood'])**(0.25)
2690:
2691: is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.
2692: inter_steps: int, optional
2693: Intermediate steps between observations for the deterministic forward Euler integration.
2694: A higher number of intermediate steps will improve the accuracy of the result, but will
2695: make computations slower. Setting `inter_steps=0` will fall back to the method accessible via
2696: `det_method` for the deterministic integration. We have found that forward Euler is generally
2697: slower, but more stable for derivatives with respect to parameters than the variable step
2698: size integrators used elsewhere in pyross. Default is 100.
2699: Returns
2700: -------
2701: FIM: 2d numpy.array
2702: The Fisher Information Matrix
2703: """
2704: # Sanity checks of the inputs
+2705: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_generator); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2706:
2707: # Process fltr and obs
+2708: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2708, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 2708, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2708, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_obs); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_obs, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
2709:
+2710: infer_result_loc = infer_result.copy()
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_infer_result_loc = __pyx_t_1; __pyx_t_1 = 0;
2711: # backwards compatibility
+2712: if 'flat_map' in infer_result_loc:
__pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_flat_map, __pyx_v_infer_result_loc, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2712, __pyx_L1_error) __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { /* … */ }
+2713: infer_result_loc['flat_params'] = infer_result_loc.pop('flat_map')
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result_loc, __pyx_n_s_pop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_n_u_flat_map) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_u_flat_map); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params, __pyx_t_1) < 0)) __PYX_ERR(0, 2713, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2714:
+2715: flat_params = np.copy(infer_result_loc['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
2716:
+2717: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2718: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__22; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0; for (;;) { if (__pyx_t_10 >= 7) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2718, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__22 = PyTuple_Pack(7, __pyx_n_u_param_keys, __pyx_n_u_param_guess_range, __pyx_n_u_is_scale_parameter, __pyx_n_u_scaled_param_guesses, __pyx_n_u_param_length, __pyx_n_u_init_flags, __pyx_n_u_init_fltrs); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 2718, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22);
2719: 'scaled_param_guesses', 'param_length', 'init_flags',
2720: 'init_fltrs']:
+2721: kwargs[key] = infer_result_loc[key]
__pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_kwargs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 2721, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2722:
+2723: def mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_10latent_FIM_1mean = {"mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_1mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10latent_FIM_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10latent_FIM_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 2723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__23);
__Pyx_GIVEREF(__pyx_tuple__23);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_10latent_FIM_1mean, 0, __pyx_n_s_latent_FIM_locals_mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2723, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean_2, 2723, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 2723, __pyx_L1_error)
+2724: return self._latent_mean(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 2724, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_latent_mean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 2724, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 2724, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+2725: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 2725, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
+2726: intervention_fun=intervention_fun, obs=obs,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 2726, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs)) { __Pyx_RaiseClosureNameError("obs"); __PYX_ERR(0, 2726, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs, __pyx_cur_scope->__pyx_v_obs) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
+2727: fltr=fltr, Tf=Tf, obs0=obs0,
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr)) { __Pyx_RaiseClosureNameError("fltr"); __PYX_ERR(0, 2727, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fltr, __pyx_cur_scope->__pyx_v_fltr) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 2727, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 2727, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs0, __pyx_cur_scope->__pyx_v_obs0) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
+2728: inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 2728, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 2724, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+2729: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 2729, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2729, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 2729, __pyx_L1_error)
2730:
+2731: def covariance(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_3covariance(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_10latent_FIM_3covariance = {"covariance", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_3covariance, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10latent_FIM_3covariance(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("covariance (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10latent_FIM_2covariance(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10latent_FIM_2covariance(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("covariance", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_latent_FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM.covariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 2731, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__25);
__Pyx_GIVEREF(__pyx_tuple__25);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_10latent_FIM_3covariance, 0, __pyx_n_s_latent_FIM_locals_covariance, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2731, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_covariance = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_covariance, 2731, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 2731, __pyx_L1_error)
+2732: return self._latent_cov(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 2732, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_latent_cov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 2732, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 2732, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+2733: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 2733, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
+2734: intervention_fun=intervention_fun, obs=obs,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 2734, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs)) { __Pyx_RaiseClosureNameError("obs"); __PYX_ERR(0, 2734, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs, __pyx_cur_scope->__pyx_v_obs) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
+2735: fltr=fltr, Tf=Tf, obs0=obs0, tangent=tangent,
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr)) { __Pyx_RaiseClosureNameError("fltr"); __PYX_ERR(0, 2735, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fltr, __pyx_cur_scope->__pyx_v_fltr) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 2735, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 2735, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs0, __pyx_cur_scope->__pyx_v_obs0) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 2735, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tangent, __pyx_cur_scope->__pyx_v_tangent) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
+2736: inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 2736, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 2732, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+2737: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 2737, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2737, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 2737, __pyx_L1_error)
2738:
+2739: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2739, __pyx_L1_error) __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2739, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L8; }
+2740: xx = infer_result_loc['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+2741: fx = abs(infer_result_loc['log_likelihood'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_log_likelihood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_5; __pyx_t_5 = 0;
+2742: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_5 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_divide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_spacing); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
2743: #eps = 10.*np.spacing(flat_params)**np.divide(1,3)
+2744: elif np.isscalar(eps):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isscalar); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_eps) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_eps); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2744, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ } __pyx_L8:;
+2745: eps = np.repeat(eps, repeats=len(flat_params))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_repeat); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_eps); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2745, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_repeats, __pyx_t_6) < 0) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_6); __pyx_t_6 = 0;
+2746: print('eps-vector used for differentiation: ', eps)
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_GIVEREF(__pyx_kp_u_eps_vector_used_for_differentiat); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_eps); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2747:
+2748: cov = covariance(flat_params)
__pyx_t_2 = __pyx_pf_6pyross_9inference_8SIR_type_10latent_FIM_2covariance(__pyx_v_covariance, __pyx_v_flat_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_cov = __pyx_t_2; __pyx_t_2 = 0;
+2749: invcov = np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linalg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inv); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_v_cov) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_cov); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_invcov = __pyx_t_2; __pyx_t_2 = 0;
2750:
+2751: dim = len(flat_params)
__pyx_t_10 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2751, __pyx_L1_error) __pyx_v_dim = __pyx_t_10;
+2752: FIM = np.empty((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_FIM = __pyx_t_2; __pyx_t_2 = 0;
+2753: dmu = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_dmu = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+2754: dcov = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_dcov = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
2755:
+2756: for i in range(dim):
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2756, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2756, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2756, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2756, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2757: dmu.append(pyross.utils.partial_derivative(mean, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_mean); __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 2757, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 2757, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dx, __pyx_t_6) < 0) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dmu, __pyx_t_6); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2758: dcov.append(pyross.utils.partial_derivative(covariance, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_covariance); __Pyx_GIVEREF(__pyx_v_covariance); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_covariance); __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 2758, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 2758, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dx, __pyx_t_1) < 0) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dcov, __pyx_t_1); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2759:
+2760: for i in range(dim):
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2760, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2760, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2760, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2760, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2761: t1 = dmu[i]@invcov@dmu[i]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_t1, __pyx_t_5); __pyx_t_5 = 0;
+2762: t2 = np.multiply(0.5,np.trace(invcov@dcov[i]@invcov@dcov[i]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multiply); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_trace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_invcov, __pyx_t_6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_14, __pyx_v_invcov); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_6, __pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_14, __pyx_t_15) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_15); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_float_0_5, __pyx_t_1}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_float_0_5, __pyx_t_1}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_15 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_float_0_5); __Pyx_GIVEREF(__pyx_float_0_5); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_4, __pyx_float_0_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_4, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_t2, __pyx_t_5); __pyx_t_5 = 0;
+2763: FIM[i,i] = t1 + t2
__pyx_t_5 = PyNumber_Add(__pyx_v_t1, __pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_i); if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_t_3, __pyx_t_5) < 0)) __PYX_ERR(0, 2763, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2764:
+2765: rows,cols = np.triu_indices(dim,1)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_5, __pyx_int_1}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_5, __pyx_int_1}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_15); __pyx_t_15 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_1); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2765, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L13_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_1 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L13_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_5), 2) < 0) __PYX_ERR(0, 2765, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L14_unpacking_done; __pyx_L13_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2765, __pyx_L1_error) __pyx_L14_unpacking_done:; } __pyx_v_rows = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_cols = __pyx_t_1; __pyx_t_1 = 0;
2766:
+2767: for i,j in zip(rows,cols):
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cols); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2767, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2767, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2767, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2767, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2767, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_15 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_15)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_15); if (unlikely(!__pyx_t_3)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_15); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_15), 2) < 0) __PYX_ERR(0, 2767, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L18_unpacking_done; __pyx_L17_unpacking_failed:; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2767, __pyx_L1_error) __pyx_L18_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2768: t1 = dmu[i]@invcov@dmu[j]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_t1, __pyx_t_3); __pyx_t_3 = 0;
+2769: t2 = np.multiply(0.5,np.trace(invcov@dcov[i]@invcov@dcov[j]))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_trace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_14 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_invcov, __pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_14, __pyx_v_invcov); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_j); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_15, __pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_14, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_float_0_5, __pyx_t_1}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_float_0_5, __pyx_t_1}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_float_0_5); __Pyx_GIVEREF(__pyx_float_0_5); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_float_0_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_t2, __pyx_t_3); __pyx_t_3 = 0;
+2770: FIM[i,j] = t1 + t2
__pyx_t_3 = PyNumber_Add(__pyx_v_t1, __pyx_v_t2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_t_5, __pyx_t_3) < 0)) __PYX_ERR(0, 2770, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2771:
+2772: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_int_neg_1}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_int_neg_1}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_int_neg_1); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_i_lower = __pyx_t_2; __pyx_t_2 = 0;
+2773: FIM[i_lower] = FIM.T[i_lower]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM, __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_i_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_v_i_lower, __pyx_t_5) < 0)) __PYX_ERR(0, 2773, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2774: return FIM
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM); __pyx_r = __pyx_v_FIM; goto __pyx_L0;
2775:
+2776: def latent_FIM_det(self, obs, fltr, Tf, infer_result,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_89latent_FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_88latent_FIM_det[] = "\n Computes the Fisher Information Matrix (FIM) of the deterministic model (ODE based, including a constant measurement error) for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n eps: float or numpy.array, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix with \n respect to the parameters. Must be either a scalar, or an array of length `len""(infer_result['flat_params'])`. \n If not specified, \n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.\n measurement_error: float, optional\n Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will \n make computations slower. Setting inter_steps=0 will fall back to the method accessible via \n det_method for the deterministic integration. We have found that forward Euler is generally slower, \n but more stable for derivatives with respect to parameters than the variable step size integrators \n used elsewhere in pyross. Default is 100.\n\n Returns\n -------\n FIM_det: 2d numpy.array\n The Fisher Information Matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_89latent_FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_measurement_error = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_FIM_det (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_eps,&__pyx_n_s_measurement_error,&__pyx_n_s_inter_steps,0};
PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_88latent_FIM_det(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_eps, PyObject *__pyx_v_measurement_error, PyObject *__pyx_v_inter_steps) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *__pyx_cur_scope;
PyObject *__pyx_v_infer_result_loc = NULL;
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_mean = 0;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_fltr_ = NULL;
PyObject *__pyx_v_sigma_sq = NULL;
PyObject *__pyx_v_cov_diag = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_cov_red = NULL;
PyObject *__pyx_v_invcov = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM_det = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_FIM_det", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det(__pyx_ptype_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 2776, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_obs = __pyx_v_obs;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs);
__pyx_cur_scope->__pyx_v_fltr = __pyx_v_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_generator = __pyx_v_generator;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator);
__pyx_cur_scope->__pyx_v_intervention_fun = __pyx_v_intervention_fun;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun);
__pyx_cur_scope->__pyx_v_inter_steps = __pyx_v_inter_steps;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inter_steps);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_infer_result_loc);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_fltr_);
__Pyx_XDECREF(__pyx_v_sigma_sq);
__Pyx_XDECREF(__pyx_v_cov_diag);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_FIM_det);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det {
PyObject_HEAD
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_fltr;
PyObject *__pyx_v_generator;
PyObject *__pyx_v_inter_steps;
PyObject *__pyx_v_intervention_fun;
PyObject *__pyx_v_kwargs;
PyObject *__pyx_v_obs;
PyObject *__pyx_v_obs0;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
};
+2777: contactMatrix=None, generator=None,
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
+2778: intervention_fun=None,
values[6] = ((PyObject *)Py_None);
+2779: eps=None, measurement_error=1e-2, inter_steps=100):
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)__pyx_float_1eneg_2);
values[9] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM_det", 0, 4, 10, 1); __PYX_ERR(0, 2776, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM_det", 0, 4, 10, 2); __PYX_ERR(0, 2776, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_FIM_det", 0, 4, 10, 3); __PYX_ERR(0, 2776, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_measurement_error);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_FIM_det") < 0)) __PYX_ERR(0, 2776, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_contactMatrix = values[4];
__pyx_v_generator = values[5];
__pyx_v_intervention_fun = values[6];
__pyx_v_eps = values[7];
__pyx_v_measurement_error = values[8];
__pyx_v_inter_steps = values[9];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_FIM_det", 0, 4, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2776, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_88latent_FIM_det(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_eps, __pyx_v_measurement_error, __pyx_v_inter_steps);
2780: """
2781: Computes the Fisher Information Matrix (FIM) of the deterministic model (ODE based, including a constant measurement error) for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.
2782:
2783: Parameters
2784: ----------
2785: obs: np.array
2786: The partially observed trajectory.
2787: fltr: 2d np.array
2788: The filter for the observation such that
2789: :math:`F_{ij} x_j (t) = obs_i(t)`
2790: Tf: float
2791: Total time of the trajectory
2792: infer_result: dict
2793: Dictionary returned by latent_infer
2794: contactMatrix: callable, optional
2795: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
2796: Either a contactMatrix or a generator must be specified.
2797: generator: pyross.contactMatrix, optional
2798: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
2799: parameters.
2800: Either a contactMatrix or a generator must be specified.
2801: intervention_fun: callable, optional
2802: The calling signature is `intervention_func(t, **kwargs)`,
2803: where t is time and kwargs are other keyword arguments for the function.
2804: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
2805: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
2806: If not set, assume intervention that's constant in time.
2807: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
2808: eps: float or numpy.array, optional
2809: Step size for numerical differentiation of the process mean and its full covariance matrix with
2810: respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`.
2811: If not specified,
2812:
2813: .. code-block:: python
2814:
2815: eps = 100*infer_result['flat_params']
2816: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
2817: infer_result['log_likelihood'])**(0.25)
2818:
2819: is used. It is recommended to use a step-size greater or equal to `eps`. Decreasing the step size too small can result in round-off error.
2820: measurement_error: float, optional
2821: Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.
2822: inter_steps: int, optional
2823: Intermediate steps between observations for the deterministic forward Euler integration.
2824: A higher number of intermediate steps will improve the accuracy of the result, but will
2825: make computations slower. Setting inter_steps=0 will fall back to the method accessible via
2826: det_method for the deterministic integration. We have found that forward Euler is generally slower,
2827: but more stable for derivatives with respect to parameters than the variable step size integrators
2828: used elsewhere in pyross. Default is 100.
2829:
2830: Returns
2831: -------
2832: FIM_det: 2d numpy.array
2833: The Fisher Information Matrix
2834: """
2835:
2836:
2837:
2838: # Sanity checks of the inputs
+2839: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2839, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix, __pyx_cur_scope->__pyx_v_generator, __pyx_cur_scope->__pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2839, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generator); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_generator); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2840:
2841: # Process fltr and obs
+2842: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2842, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 2842, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2842, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_obs); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_obs, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
2843:
+2844: infer_result_loc = infer_result.copy()
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_infer_result_loc = __pyx_t_1; __pyx_t_1 = 0;
2845: # backwards compatibility
+2846: if 'flat_map' in infer_result_loc:
__pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_flat_map, __pyx_v_infer_result_loc, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2846, __pyx_L1_error) __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { /* … */ }
+2847: infer_result_loc['flat_params'] = infer_result_loc.pop('flat_map')
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_infer_result_loc, __pyx_n_s_pop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_n_u_flat_map) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_u_flat_map); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params, __pyx_t_1) < 0)) __PYX_ERR(0, 2847, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2848:
+2849: flat_params = np.copy(infer_result_loc['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
+2850: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2851: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__22; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0; for (;;) { if (__pyx_t_10 >= 7) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2851, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2852: 'scaled_param_guesses', 'param_length', 'init_flags',
2853: 'init_fltrs']:
+2854: kwargs[key] = infer_result_loc[key]
__pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_kwargs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 2854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2855:
+2856: def mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_14latent_FIM_det_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_14latent_FIM_det_1mean = {"mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_14latent_FIM_det_1mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_14latent_FIM_det_1mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_14latent_FIM_det_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_14latent_FIM_det_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_latent_FIM_det *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_FIM_det.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_y); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 2856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__27);
__Pyx_GIVEREF(__pyx_tuple__27);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_14latent_FIM_det_1mean, 0, __pyx_n_s_latent_FIM_det_locals_mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean_2, 2856, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 2856, __pyx_L1_error)
+2857: return self._latent_mean(y, contactMatrix=contactMatrix,
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 2857, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_latent_mean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __pyx_t_4 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 2857, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_contactMatrix, __pyx_cur_scope->__pyx_v_contactMatrix) < 0) __PYX_ERR(0, 2857, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+2858: generator=generator,
if (unlikely(!__pyx_cur_scope->__pyx_v_generator)) { __Pyx_RaiseClosureNameError("generator"); __PYX_ERR(0, 2858, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_generator, __pyx_cur_scope->__pyx_v_generator) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
+2859: intervention_fun=intervention_fun, obs=obs,
if (unlikely(!__pyx_cur_scope->__pyx_v_intervention_fun)) { __Pyx_RaiseClosureNameError("intervention_fun"); __PYX_ERR(0, 2859, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_intervention_fun, __pyx_cur_scope->__pyx_v_intervention_fun) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs)) { __Pyx_RaiseClosureNameError("obs"); __PYX_ERR(0, 2859, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs, __pyx_cur_scope->__pyx_v_obs) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
+2860: fltr=fltr, Tf=Tf, obs0=obs0,
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr)) { __Pyx_RaiseClosureNameError("fltr"); __PYX_ERR(0, 2860, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fltr, __pyx_cur_scope->__pyx_v_fltr) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 2860, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tf, __pyx_cur_scope->__pyx_v_Tf) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 2860, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_obs0, __pyx_cur_scope->__pyx_v_obs0) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
+2861: inter_steps=inter_steps,
if (unlikely(!__pyx_cur_scope->__pyx_v_inter_steps)) { __Pyx_RaiseClosureNameError("inter_steps"); __PYX_ERR(0, 2861, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_inter_steps, __pyx_cur_scope->__pyx_v_inter_steps) < 0) __PYX_ERR(0, 2857, __pyx_L1_error)
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
+2862: **kwargs)
if (unlikely(!__pyx_cur_scope->__pyx_v_kwargs)) { __Pyx_RaiseClosureNameError("kwargs"); __PYX_ERR(0, 2862, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) {
PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
__PYX_ERR(0, 2862, __pyx_L1_error)
}
if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_cur_scope->__pyx_v_kwargs) < 0) __PYX_ERR(0, 2862, __pyx_L1_error)
2863:
+2864: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2864, __pyx_L1_error) __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L8; }
+2865: xx = infer_result_loc['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+2866: fx = abs(infer_result_loc['log_likelihood'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result_loc, __pyx_n_u_log_likelihood); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_5; __pyx_t_5 = 0;
+2867: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_5 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_divide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_spacing); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
2868: #eps = 10.*np.spacing(flat_params)**np.divide(1,3)
+2869: elif np.isscalar(eps):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isscalar); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_eps) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_eps); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2869, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ } __pyx_L8:;
+2870: eps = np.repeat(eps, repeats=len(flat_params))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_repeat); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_eps); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2870, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_repeats, __pyx_t_6) < 0) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2870, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_6); __pyx_t_6 = 0;
+2871: print('eps-vector used for differentiation: ', eps)
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_GIVEREF(__pyx_kp_u_eps_vector_used_for_differentiat); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_eps_vector_used_for_differentiat); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_eps); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2872:
+2873: fltr_ = fltr[1:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_fltr_ = __pyx_t_2; __pyx_t_2 = 0;
+2874: sigma_sq = measurement_error*measurement_error
__pyx_t_2 = PyNumber_Multiply(__pyx_v_measurement_error, __pyx_v_measurement_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_sigma_sq = __pyx_t_2; __pyx_t_2 = 0;
+2875: cov_diag = np.repeat(sigma_sq, repeats=(int(self.dim)*(fltr_.shape[0])))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_repeat); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sigma_sq); __Pyx_GIVEREF(__pyx_v_sigma_sq); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sigma_sq); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fltr_, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_repeats, __pyx_t_5) < 0) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_diag = __pyx_t_5; __pyx_t_5 = 0;
+2876: cov = np.diag(cov_diag)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_diag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_v_cov_diag) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cov_diag); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cov = __pyx_t_5; __pyx_t_5 = 0;
+2877: full_fltr = sparse.block_diag(fltr_)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sparse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_fltr_) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_fltr_); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_full_fltr = __pyx_t_5; __pyx_t_5 = 0;
+2878: cov_red = full_fltr@cov@np.transpose(full_fltr)
__pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_v_cov); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_transpose); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_full_fltr); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_red = __pyx_t_6; __pyx_t_6 = 0;
+2879: invcov = np.linalg.inv(cov_red)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linalg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_inv); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v_cov_red) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_cov_red); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_invcov = __pyx_t_6; __pyx_t_6 = 0;
2880:
+2881: dim = len(flat_params)
__pyx_t_10 = PyObject_Length(__pyx_v_flat_params); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2881, __pyx_L1_error) __pyx_v_dim = __pyx_t_10;
+2882: FIM_det = np.empty((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_6 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_FIM_det = __pyx_t_6; __pyx_t_6 = 0;
+2883: dmu = []
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_dmu = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
2884:
+2885: for i in range(dim):
__pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2885, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2885, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2885, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2885, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2886: dmu.append(pyross.utils.partial_derivative(mean, var=i, point=flat_params, dx=eps[i]))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_partial_derivative); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_mean); __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 2886, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_point, __pyx_v_flat_params) < 0) __PYX_ERR(0, 2886, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_eps, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dx, __pyx_t_1) < 0) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dmu, __pyx_t_1); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2886, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2887:
+2888: for i in range(dim):
__pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2888, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2888, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2888, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2888, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2889: FIM_det[i,i] = dmu[i]@invcov@dmu[i]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_invcov); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_i); if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_t_1, __pyx_t_11) < 0)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
2890:
+2891: rows,cols = np.triu_indices(dim,1)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_int_1}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_int_1}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_t_11); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_1); __pyx_t_11 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2891, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_11); if (unlikely(!__pyx_t_1)) goto __pyx_L13_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_11); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_11), 2) < 0) __PYX_ERR(0, 2891, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L14_unpacking_done; __pyx_L13_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2891, __pyx_L1_error) __pyx_L14_unpacking_done:; } __pyx_v_rows = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_cols = __pyx_t_5; __pyx_t_5 = 0;
2892:
+2893: for i,j in zip(rows,cols):
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_cols); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0; __pyx_t_12 = NULL; } else { __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2893, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2893, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_5); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2893, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2893, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2893, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_11 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_11)) goto __pyx_L17_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) __PYX_ERR(0, 2893, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L18_unpacking_done; __pyx_L17_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2893, __pyx_L1_error) __pyx_L18_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_11); __pyx_t_11 = 0; /* … */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2894: FIM_det[i,j] = dmu[i]@invcov@dmu[j]
__pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, __pyx_v_invcov); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_dmu, __pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 2894, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2895:
+2896: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_int_neg_1}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_int_neg_1}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_int_neg_1); __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_i_lower = __pyx_t_6; __pyx_t_6 = 0;
+2897: FIM_det[i_lower] = FIM_det.T[i_lower]
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM_det, __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_v_i_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_v_i_lower, __pyx_t_5) < 0)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2898: return FIM_det
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM_det); __pyx_r = __pyx_v_FIM_det; goto __pyx_L0;
2899:
+2900: def latent_hessian(self, obs, fltr, Tf, infer_result, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_91latent_hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_90latent_hessian[] = "\n Computes the Hessian matrix for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. I""f not specified,\n \n .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. For `fd_method=\"central\"` it is recommended to use a step-size greater or equal to `eps`. \n Decreasing the step size too small can result in round-off error.\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\". Default is \"central\".\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration. \n We have found that forward Euler is generally slower, but sometimes more stable for derivatives with respect \n to parameters than the variable step size integrators used elsewhere in pyross. Default is 0.\n Returns\n -------\n hess: 2d numpy.array\n The Hessian matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_91latent_hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_v_basis = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_hessian (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_fd_method,&__pyx_n_s_inter_steps,&__pyx_n_s_nprocesses,&__pyx_n_s_basis,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_90latent_hessian(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_fd_method, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_nprocesses, PyObject *__pyx_v_basis) {
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_xx = NULL;
PyObject *__pyx_v_fx = NULL;
PyObject *__pyx_v_hess = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_hessian", 0);
__Pyx_INCREF(__pyx_v_obs);
__Pyx_INCREF(__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_eps);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_xx);
__Pyx_XDECREF(__pyx_v_fx);
__Pyx_XDECREF(__pyx_v_hess);
__Pyx_XDECREF(__pyx_v_obs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_eps);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2901: generator=None, intervention_fun=None, tangent=False,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_False);
+2902: eps=None, fd_method="central", inter_steps=0, nprocesses=0, basis=None):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)__pyx_n_u_central);
values[10] = ((PyObject *)__pyx_int_0);
values[11] = ((PyObject *)__pyx_int_0);
values[12] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_hessian", 0, 4, 13, 1); __PYX_ERR(0, 2900, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_hessian", 0, 4, 13, 2); __PYX_ERR(0, 2900, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_hessian", 0, 4, 13, 3); __PYX_ERR(0, 2900, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_basis);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_hessian") < 0)) __PYX_ERR(0, 2900, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_contactMatrix = values[4];
__pyx_v_generator = values[5];
__pyx_v_intervention_fun = values[6];
__pyx_v_tangent = values[7];
__pyx_v_eps = values[8];
__pyx_v_fd_method = values[9];
__pyx_v_inter_steps = values[10];
__pyx_v_nprocesses = values[11];
__pyx_v_basis = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_hessian", 0, 4, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2900, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_90latent_hessian(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps, __pyx_v_nprocesses, __pyx_v_basis);
2903: """
2904: Computes the Hessian matrix for the initial conditions and all desired parameters, including control parameters, for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.
2905:
2906: Parameters
2907: ----------
2908: obs: np.array
2909: The partially observed trajectory.
2910: fltr: 2d np.array
2911: The filter for the observation such that
2912: :math:`F_{ij} x_j (t) = obs_i(t)`
2913: Tf: float
2914: Total time of the trajectory
2915: infer_result: dict
2916: Dictionary returned by latent_infer
2917: contactMatrix: callable, optional
2918: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
2919: Either a contactMatrix or a generator must be specified.
2920: generator: pyross.contactMatrix, optional
2921: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
2922: parameters.
2923: Either a contactMatrix or a generator must be specified.
2924: intervention_fun: callable, optional
2925: The calling signature is `intervention_func(t, **kwargs)`,
2926: where t is time and kwargs are other keyword arguments for the function.
2927: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
2928: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
2929: If not set, assume intervention that's constant in time.
2930: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
2931: tangent: bool, optional
2932: Set to True to use tangent space inference. Default is False.
2933: eps: float or numpy.array, optional
2934: Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. If not specified,
2935:
2936: .. code-block:: python
2937:
2938: eps = 100*infer_result['flat_params']
2939: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
2940: infer_result['log_likelihood'])**(0.25)
2941:
2942: is used. For `fd_method="central"` it is recommended to use a step-size greater or equal to `eps`.
2943: Decreasing the step size too small can result in round-off error.
2944: fd_method: str, optional
2945: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central". Default is "central".
2946: inter_steps: int, optional
2947: Intermediate steps between observations for the deterministic forward Euler integration.
2948: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
2949: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
2950: We have found that forward Euler is generally slower, but sometimes more stable for derivatives with respect
2951: to parameters than the variable step size integrators used elsewhere in pyross. Default is 0.
2952: Returns
2953: -------
2954: hess: 2d numpy.array
2955: The Hessian matrix
2956: """
2957: # Sanity checks of the inputs
+2958: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2959:
2960: # Process fltr and obs
+2961: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2961, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 2961, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2961, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, __pyx_t_3); __pyx_t_3 = 0; __pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
2962:
+2963: flat_params = np.copy(infer_result['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
2964:
+2965: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2966: kwargs['obs'] = obs
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_obs, __pyx_v_obs) < 0)) __PYX_ERR(0, 2966, __pyx_L1_error)
+2967: kwargs['fltr'] = fltr
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_fltr, __pyx_v_fltr) < 0)) __PYX_ERR(0, 2967, __pyx_L1_error)
+2968: kwargs['Tf'] = Tf
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_Tf, __pyx_v_Tf) < 0)) __PYX_ERR(0, 2968, __pyx_L1_error)
+2969: kwargs['obs0'] = obs0
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_obs0, __pyx_v_obs0) < 0)) __PYX_ERR(0, 2969, __pyx_L1_error)
+2970: kwargs['tangent'] = tangent
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_tangent, __pyx_v_tangent) < 0)) __PYX_ERR(0, 2970, __pyx_L1_error)
+2971: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__29; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; for (;;) { if (__pyx_t_8 >= 8) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2971, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__29 = PyTuple_Pack(8, __pyx_n_u_param_keys, __pyx_n_u_param_guess_range, __pyx_n_u_is_scale_parameter, __pyx_n_u_scaled_param_guesses, __pyx_n_u_param_length, __pyx_n_u_init_flags, __pyx_n_u_init_fltrs, __pyx_n_u_prior); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 2971, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29);
2972: 'scaled_param_guesses', 'param_length', 'init_flags',
2973: 'init_fltrs', 'prior']:
+2974: kwargs[key] = infer_result[key]
__pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 2974, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2975:
+2976: kwargs['generator']=generator
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_generator, __pyx_v_generator) < 0)) __PYX_ERR(0, 2976, __pyx_L1_error)
+2977: kwargs['intervention_fun']=intervention_fun
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0)) __PYX_ERR(0, 2977, __pyx_L1_error)
+2978: kwargs['inter_steps']=inter_steps
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_inter_steps, __pyx_v_inter_steps) < 0)) __PYX_ERR(0, 2978, __pyx_L1_error)
+2979: kwargs['disable_penalty']=None
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_disable_penalty, Py_None) < 0)) __PYX_ERR(0, 2979, __pyx_L1_error)
2980:
+2981: if np.all(eps == None):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_v_eps, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2981, __pyx_L1_error) __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2981, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ }
+2982: xx = infer_result['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_xx = __pyx_t_1; __pyx_t_1 = 0;
+2983: fx = abs(infer_result['log_posterior'])
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_log_posterior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fx = __pyx_t_5; __pyx_t_5 = 0;
+2984: eps = 100 * xx * np.divide(np.spacing(fx),fx)**(0.25)
__pyx_t_5 = PyNumber_Multiply(__pyx_int_100, __pyx_v_xx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_divide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_spacing); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_6, __pyx_v_fx) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_fx); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_3, __pyx_v_fx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_v_fx); __Pyx_GIVEREF(__pyx_v_fx); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_fx); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_float_0_25, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_eps, __pyx_t_1); __pyx_t_1 = 0;
2985: #eps = 10.*np.spacing(flat_params)**(0.25)
+2986: print('epsilon used for differentiation: ', eps)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_epsilon_used_for_differentiation); __Pyx_GIVEREF(__pyx_kp_u_epsilon_used_for_differentiation); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_epsilon_used_for_differentiation); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_eps); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2987:
+2988: hess = hessian_finite_difference(flat_params, self._latent_infer_to_minimize, eps, method=fd_method, nprocesses=nprocesses,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_hessian_finite_difference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_to_minimize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_params); __Pyx_GIVEREF(__pyx_v_flat_params); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_params); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_eps); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 2988, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 2988, __pyx_L1_error) /* … */ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_hess = __pyx_t_6; __pyx_t_6 = 0;
+2989: basis=basis, function_kwargs=kwargs)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_basis, __pyx_v_basis) < 0) __PYX_ERR(0, 2988, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_function_kwargs, __pyx_v_kwargs) < 0) __PYX_ERR(0, 2988, __pyx_L1_error)
+2990: return hess
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_hess); __pyx_r = __pyx_v_hess; goto __pyx_L0;
2991:
2992:
+2993: def sample_latent(self, obs, fltr, Tf, infer_result, flat_params_list, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_93sample_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_92sample_latent[] = "\n Samples the posterior and prior \n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n The total time of the trajectory.\n infer_result: dict\n Dictionary returned by latent_infer\n flat_params_list: list of np.array's\n Parameters for which the prior and posterior are sampled\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0`"" will fall back to the method accessible via `det_method` for the deterministic integration.\n nprocesses: int, optional\n The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is\n the number of cpu cores if `pathos` is available, otherwise 1.\n\n Returns\n -------\n posterior: np.array\n posterior evaluated along the 1d slice\n prior: np.array\n prior evaluated along the 1d slice\n \n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_93sample_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_flat_params_list = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_flat_params_list,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,&__pyx_n_s_nprocesses,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_92sample_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_flat_params_list, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_v_obs0 = NULL;
CYTHON_UNUSED PyObject *__pyx_v_flat_params = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_posterior = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_8genexpr4__pyx_v_s = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_latent", 0);
__Pyx_INCREF(__pyx_v_obs);
__Pyx_INCREF(__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_flat_params);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_posterior);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s);
__Pyx_XDECREF(__pyx_v_obs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2994: generator=None, intervention_fun=None, tangent=False, inter_steps=0, nprocesses=0):
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_latent", 0, 5, 11, 1); __PYX_ERR(0, 2993, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_latent", 0, 5, 11, 2); __PYX_ERR(0, 2993, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_latent", 0, 5, 11, 3); __PYX_ERR(0, 2993, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_params_list)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_latent", 0, 5, 11, 4); __PYX_ERR(0, 2993, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sample_latent") < 0)) __PYX_ERR(0, 2993, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_flat_params_list = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_inter_steps = values[9];
__pyx_v_nprocesses = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("sample_latent", 0, 5, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2993, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_92sample_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_flat_params_list, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses);
2995: """
2996: Samples the posterior and prior
2997:
2998: Parameters
2999: ----------
3000: obs: np.array
3001: The partially observed trajectory.
3002: fltr: 2d np.array
3003: The filter for the observation such that
3004: :math:`F_{ij} x_j (t) = obs_i(t)`
3005: Tf: float
3006: The total time of the trajectory.
3007: infer_result: dict
3008: Dictionary returned by latent_infer
3009: flat_params_list: list of np.array's
3010: Parameters for which the prior and posterior are sampled
3011: contactMatrix: callable, optional
3012: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
3013: Either a contactMatrix or a generator must be specified.
3014: generator: pyross.contactMatrix, optional
3015: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
3016: parameters.
3017: Either a contactMatrix or a generator must be specified.
3018: intervention_fun: callable, optional
3019: The calling signature is `intervention_func(t, **kwargs)`,
3020: where t is time and kwargs are other keyword arguments for the function.
3021: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
3022: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
3023: If not set, assume intervention that's constant in time.
3024: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
3025: tangent: bool, optional
3026: Set to True to use tangent space inference. Default is False.
3027: inter_steps: int, optional
3028: Intermediate steps between observations for the deterministic forward Euler integration.
3029: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
3030: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
3031: nprocesses: int, optional
3032: The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is
3033: the number of cpu cores if `pathos` is available, otherwise 1.
3034:
3035: Returns
3036: -------
3037: posterior: np.array
3038: posterior evaluated along the 1d slice
3039: prior: np.array
3040: prior evaluated along the 1d slice
3041:
3042: """
3043: # Sanity checks of the inputs
+3044: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3045:
3046: # Process fltr and obs
+3047: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3047, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 3047, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3047, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, __pyx_t_3); __pyx_t_3 = 0; __pyx_v_obs0 = __pyx_t_5; __pyx_t_5 = 0;
3048:
+3049: flat_params = np.copy(infer_result['flat_params'])
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_params = __pyx_t_1; __pyx_t_1 = 0;
3050:
+3051: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3052: kwargs['obs'] = obs
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_obs, __pyx_v_obs) < 0)) __PYX_ERR(0, 3052, __pyx_L1_error)
+3053: kwargs['fltr'] = fltr
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_fltr, __pyx_v_fltr) < 0)) __PYX_ERR(0, 3053, __pyx_L1_error)
+3054: kwargs['Tf'] = Tf
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_Tf, __pyx_v_Tf) < 0)) __PYX_ERR(0, 3054, __pyx_L1_error)
+3055: kwargs['obs0'] = obs0
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_obs0, __pyx_v_obs0) < 0)) __PYX_ERR(0, 3055, __pyx_L1_error)
+3056: kwargs['tangent'] = tangent
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_tangent, __pyx_v_tangent) < 0)) __PYX_ERR(0, 3056, __pyx_L1_error)
+3057: for key in ['param_keys', 'param_guess_range', 'is_scale_parameter',
__pyx_t_1 = __pyx_tuple__29; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; for (;;) { if (__pyx_t_8 >= 8) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 3057, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3058: 'scaled_param_guesses', 'param_length', 'init_flags',
3059: 'init_fltrs', 'prior']:
+3060: kwargs[key] = infer_result[key]
__pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 3060, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3061:
+3062: kwargs['generator']=generator
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_generator, __pyx_v_generator) < 0)) __PYX_ERR(0, 3062, __pyx_L1_error)
+3063: kwargs['intervention_fun']=intervention_fun
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0)) __PYX_ERR(0, 3063, __pyx_L1_error)
+3064: kwargs['inter_steps']=inter_steps
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_inter_steps, __pyx_v_inter_steps) < 0)) __PYX_ERR(0, 3064, __pyx_L1_error)
+3065: kwargs['disable_penalty']=None
if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_u_disable_penalty, Py_None) < 0)) __PYX_ERR(0, 3065, __pyx_L1_error)
3066:
3067:
+3068: posterior = eval_parallel(flat_params_list, self._latent_infer_to_minimize, nprocesses=nprocesses, function_kwargs=kwargs)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_eval_parallel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3068, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_to_minimize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3068, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3068, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_params_list); __Pyx_GIVEREF(__pyx_v_flat_params_list); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_params_list); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3068, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nprocesses, __pyx_v_nprocesses) < 0) __PYX_ERR(0, 3068, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_function_kwargs, __pyx_v_kwargs) < 0) __PYX_ERR(0, 3068, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3068, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_posterior = __pyx_t_2; __pyx_t_2 = 0;
+3069: prior = [ np.sum(infer_result['prior'].logpdf(s)) for s in flat_params_list]
{ /* enter inner scope */
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_2);
if (likely(PyList_CheckExact(__pyx_v_flat_params_list)) || PyTuple_CheckExact(__pyx_v_flat_params_list)) {
__pyx_t_3 = __pyx_v_flat_params_list; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
__pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_flat_params_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3069, __pyx_L9_error)
}
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 3069, __pyx_L9_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 3069, __pyx_L9_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
} else {
__pyx_t_5 = __pyx_t_9(__pyx_t_3);
if (unlikely(!__pyx_t_5)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 3069, __pyx_L9_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_s, __pyx_t_5);
__pyx_t_5 = 0;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_10 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_prior); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
if (likely(__pyx_t_10)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
__pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_8genexpr4__pyx_v_s) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_8genexpr4__pyx_v_s);
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_11)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
__pyx_t_5 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_11, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 3069, __pyx_L9_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s); __pyx_8genexpr4__pyx_v_s = 0;
goto __pyx_L12_exit_scope;
__pyx_L9_error:;
__Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s); __pyx_8genexpr4__pyx_v_s = 0;
goto __pyx_L1_error;
__pyx_L12_exit_scope:;
} /* exit inner scope */
__pyx_v_prior = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
3070:
+3071: return -np.array(posterior), np.array(prior)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_posterior) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_posterior); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_v_prior) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_prior); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
3072:
3073:
+3074: def latent_param_slice(self, obs, fltr, Tf, infer_result, pos, direction, scale, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_95latent_param_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_94latent_param_slice[] = "\n Samples the posterior and prior along a one-dimensional slice of the parameter space\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n The total time of the trajectory.\n infer_result: dict\n Dictionary returned by latent_infer\n pos: np.array\n Position in parameter space around which the parameter slice is computed\n direction: np.array\n Direction in parameter space in which the parameter slice is computed \n scale: np.array\n Values by which the direction vector is scaled. Points evaluated are pos + scale * direction\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n in""ter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.\n nprocesses: int, optional\n The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is\n the number of cpu cores if `pathos` is available, otherwise 1.\n\n Returns\n -------\n posterior: np.array\n posterior evaluated along the 1d slice\n prior: np.array\n prior evaluated along the 1d slice\n \n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_95latent_param_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_pos = 0;
PyObject *__pyx_v_direction = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_param_slice (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_pos,&__pyx_n_s_direction,&__pyx_n_s_scale,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,&__pyx_n_s_nprocesses,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
values[7] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_94latent_param_slice(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_pos, PyObject *__pyx_v_direction, PyObject *__pyx_v_scale, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_v_samples = NULL;
PyObject *__pyx_8genexpr5__pyx_v_s = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_param_slice", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_param_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_samples);
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_s);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3075: generator=None, intervention_fun=None, tangent=False, inter_steps=0, nprocesses=0):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_int_0);
values[12] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 1); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 2); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 3); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 4); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 5); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, 6); __PYX_ERR(0, 3074, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_param_slice") < 0)) __PYX_ERR(0, 3074, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_pos = values[4];
__pyx_v_direction = values[5];
__pyx_v_scale = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_generator = values[8];
__pyx_v_intervention_fun = values[9];
__pyx_v_tangent = values[10];
__pyx_v_inter_steps = values[11];
__pyx_v_nprocesses = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_param_slice", 0, 7, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3074, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_param_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_94latent_param_slice(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_pos, __pyx_v_direction, __pyx_v_scale, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses);
3076: """
3077: Samples the posterior and prior along a one-dimensional slice of the parameter space
3078:
3079: Parameters
3080: ----------
3081: obs: np.array
3082: The partially observed trajectory.
3083: fltr: 2d np.array
3084: The filter for the observation such that
3085: :math:`F_{ij} x_j (t) = obs_i(t)`
3086: Tf: float
3087: The total time of the trajectory.
3088: infer_result: dict
3089: Dictionary returned by latent_infer
3090: pos: np.array
3091: Position in parameter space around which the parameter slice is computed
3092: direction: np.array
3093: Direction in parameter space in which the parameter slice is computed
3094: scale: np.array
3095: Values by which the direction vector is scaled. Points evaluated are pos + scale * direction
3096: contactMatrix: callable, optional
3097: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
3098: Either a contactMatrix or a generator must be specified.
3099: generator: pyross.contactMatrix, optional
3100: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
3101: parameters.
3102: Either a contactMatrix or a generator must be specified.
3103: intervention_fun: callable, optional
3104: The calling signature is `intervention_func(t, **kwargs)`,
3105: where t is time and kwargs are other keyword arguments for the function.
3106: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
3107: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
3108: If not set, assume intervention that's constant in time.
3109: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
3110: tangent: bool, optional
3111: Set to True to use tangent space inference. Default is False.
3112: inter_steps: int, optional
3113: Intermediate steps between observations for the deterministic forward Euler integration.
3114: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
3115: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
3116: nprocesses: int, optional
3117: The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is
3118: the number of cpu cores if `pathos` is available, otherwise 1.
3119:
3120: Returns
3121: -------
3122: posterior: np.array
3123: posterior evaluated along the 1d slice
3124: prior: np.array
3125: prior evaluated along the 1d slice
3126:
3127: """
3128:
3129:
+3130: samples = [ pos + s*direction for s in scale]
{ /* enter inner scope */
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_v_scale)) || PyTuple_CheckExact(__pyx_v_scale)) {
__pyx_t_2 = __pyx_v_scale; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
__pyx_t_4 = NULL;
} else {
__pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_scale); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3130, __pyx_L5_error)
}
for (;;) {
if (likely(!__pyx_t_4)) {
if (likely(PyList_CheckExact(__pyx_t_2))) {
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3130, __pyx_L5_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3130, __pyx_L5_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
}
} else {
__pyx_t_5 = __pyx_t_4(__pyx_t_2);
if (unlikely(!__pyx_t_5)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 3130, __pyx_L5_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_s, __pyx_t_5);
__pyx_t_5 = 0;
__pyx_t_5 = PyNumber_Multiply(__pyx_8genexpr5__pyx_v_s, __pyx_v_direction); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyNumber_Add(__pyx_v_pos, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 3130, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_s); __pyx_8genexpr5__pyx_v_s = 0;
goto __pyx_L8_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_s); __pyx_8genexpr5__pyx_v_s = 0;
goto __pyx_L1_error;
__pyx_L8_exit_scope:;
} /* exit inner scope */
__pyx_v_samples = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
3131:
+3132: return self.sample_latent(obs, fltr, Tf, infer_result, samples, contactMatrix,
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sample_latent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+3133: generator, intervention_fun, tangent, inter_steps, nprocesses)
__pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[12] = {__pyx_t_6, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_samples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 11+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[12] = {__pyx_t_6, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_samples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 11+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(11+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_7, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_infer_result); __Pyx_GIVEREF(__pyx_v_infer_result); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_7, __pyx_v_infer_result); __Pyx_INCREF(__pyx_v_samples); __Pyx_GIVEREF(__pyx_v_samples); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_7, __pyx_v_samples); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_7, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_7, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_7, __pyx_v_intervention_fun); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_7, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_7, __pyx_v_inter_steps); __Pyx_INCREF(__pyx_v_nprocesses); __Pyx_GIVEREF(__pyx_v_nprocesses); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_7, __pyx_v_nprocesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3134:
+3135: def sample_gaussian_latent(self, N, obs, fltr, Tf, infer_result, invcov, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_97sample_gaussian_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_96sample_gaussian_latent[] = "\n Sample `N` samples of the parameters from the Gaussian centered at the MAP estimate with specified\n covariance `cov`.\n \n Parameters\n ----------\n N: int\n The number of samples.\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n The total time of the trajectory.\n infer_result: dict\n Dictionary returned by latent_infer\n invcov: np.array\n The inverse covariance matrix of the flat parameters.\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n allow_negative: bool, optional\n Allow negative values of the sample parameters. If False, samples with negative paramters values are discarded \n "" and additional samples are drawn until the specified number `N` of samples is reached. Default is False.\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower. \n Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.\n nprocesses: int, optional\n The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is\n the number of cpu cores if `pathos` is available, otherwise 1.\n\n Returns\n -------\n samples: list of np.array's\n N samples of the Gaussian distribution (flat parameters).\n posterior: np.array\n posterior evaluated along the 1d slice\n prior: np.array\n prior evaluated along the 1d slice\n \n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_97sample_gaussian_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_invcov = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_allow_negative = 0;
PyObject *__pyx_v_nprocesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_gaussian_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_N,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_invcov,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,&__pyx_n_s_allow_negative,&__pyx_n_s_nprocesses,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_96sample_gaussian_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_N, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_invcov, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_allow_negative, PyObject *__pyx_v_nprocesses) {
PyObject *__pyx_v_mean = NULL;
PyObject *__pyx_v_chol = NULL;
PyObject *__pyx_v_L = NULL;
PyObject *__pyx_v_uninormal = NULL;
PyObject *__pyx_v_samples = NULL;
PyObject *__pyx_v_xlist = NULL;
PyObject *__pyx_v_ndx = NULL;
CYTHON_UNUSED PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_posterior = NULL;
PyObject *__pyx_v_prior = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_gaussian_latent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_gaussian_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_chol);
__Pyx_XDECREF(__pyx_v_L);
__Pyx_XDECREF(__pyx_v_uninormal);
__Pyx_XDECREF(__pyx_v_samples);
__Pyx_XDECREF(__pyx_v_xlist);
__Pyx_XDECREF(__pyx_v_ndx);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_posterior);
__Pyx_XDECREF(__pyx_v_prior);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3136: generator=None, intervention_fun=None, tangent=False, inter_steps=0, allow_negative=False, nprocesses=0):
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)__pyx_int_0);
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, 1); __PYX_ERR(0, 3135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, 2); __PYX_ERR(0, 3135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, 3); __PYX_ERR(0, 3135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, 4); __PYX_ERR(0, 3135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_invcov)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, 5); __PYX_ERR(0, 3135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_allow_negative);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nprocesses);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sample_gaussian_latent") < 0)) __PYX_ERR(0, 3135, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_N = values[0];
__pyx_v_obs = values[1];
__pyx_v_fltr = values[2];
__pyx_v_Tf = values[3];
__pyx_v_infer_result = values[4];
__pyx_v_invcov = values[5];
__pyx_v_contactMatrix = values[6];
__pyx_v_generator = values[7];
__pyx_v_intervention_fun = values[8];
__pyx_v_tangent = values[9];
__pyx_v_inter_steps = values[10];
__pyx_v_allow_negative = values[11];
__pyx_v_nprocesses = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("sample_gaussian_latent", 0, 6, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3135, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_gaussian_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_96sample_gaussian_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_N, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_invcov, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_allow_negative, __pyx_v_nprocesses);
3137: """
3138: Sample `N` samples of the parameters from the Gaussian centered at the MAP estimate with specified
3139: covariance `cov`.
3140:
3141: Parameters
3142: ----------
3143: N: int
3144: The number of samples.
3145: obs: np.array
3146: The partially observed trajectory.
3147: fltr: 2d np.array
3148: The filter for the observation such that
3149: :math:`F_{ij} x_j (t) = obs_i(t)`
3150: Tf: float
3151: The total time of the trajectory.
3152: infer_result: dict
3153: Dictionary returned by latent_infer
3154: invcov: np.array
3155: The inverse covariance matrix of the flat parameters.
3156: contactMatrix: callable, optional
3157: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
3158: Either a contactMatrix or a generator must be specified.
3159: generator: pyross.contactMatrix, optional
3160: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
3161: parameters.
3162: Either a contactMatrix or a generator must be specified.
3163: intervention_fun: callable, optional
3164: The calling signature is `intervention_func(t, **kwargs)`,
3165: where t is time and kwargs are other keyword arguments for the function.
3166: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
3167: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
3168: If not set, assume intervention that's constant in time.
3169: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
3170: tangent: bool, optional
3171: Set to True to use tangent space inference. Default is False.
3172: allow_negative: bool, optional
3173: Allow negative values of the sample parameters. If False, samples with negative paramters values are discarded
3174: and additional samples are drawn until the specified number `N` of samples is reached. Default is False.
3175: inter_steps: int, optional
3176: Intermediate steps between observations for the deterministic forward Euler integration.
3177: A higher number of intermediate steps will improve the accuracy of the result, but will make computations slower.
3178: Setting `inter_steps=0` will fall back to the method accessible via `det_method` for the deterministic integration.
3179: nprocesses: int, optional
3180: The number of processes used to compute the likelihood for the walkers, needs `pathos`. Default is
3181: the number of cpu cores if `pathos` is available, otherwise 1.
3182:
3183: Returns
3184: -------
3185: samples: list of np.array's
3186: N samples of the Gaussian distribution (flat parameters).
3187: posterior: np.array
3188: posterior evaluated along the 1d slice
3189: prior: np.array
3190: prior evaluated along the 1d slice
3191:
3192: """
3193:
3194:
+3195: mean = infer_result['flat_params']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_flat_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_mean = __pyx_t_1; __pyx_t_1 = 0;
3196:
+3197: chol = cholesky(invcov, lower=False)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cholesky); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_invcov); __Pyx_GIVEREF(__pyx_v_invcov); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_invcov); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_lower, Py_False) < 0) __PYX_ERR(0, 3197, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_chol = __pyx_t_4; __pyx_t_4 = 0;
+3198: L = dtrtri(chol, lower=0)[0]
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_dtrtri); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_chol); __Pyx_GIVEREF(__pyx_v_chol); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_chol); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_lower, __pyx_int_0) < 0) __PYX_ERR(0, 3198, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_L = __pyx_t_2; __pyx_t_2 = 0;
3199:
+3200: uninormal=multivariate_normal(cov=np.eye(len(mean)))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_eye); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = PyObject_Length(__pyx_v_mean); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3200, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cov_2, __pyx_t_3) < 0) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_uninormal = __pyx_t_3; __pyx_t_3 = 0;
+3201: samples=[]
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_samples = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+3202: xlist=uninormal.rvs(1000000)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_uninormal, __pyx_n_s_rvs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_int_1000000) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_1000000); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xlist = __pyx_t_3; __pyx_t_3 = 0;
+3203: ndx=0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_ndx = __pyx_int_0;
+3204: for i in range(N):
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_N); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_8 = NULL; } else { __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3204, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3204, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3204, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3204, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3205: while True:
while (1) {
+3206: x=xlist[ndx]
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_xlist, __pyx_v_ndx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3); __pyx_t_3 = 0;
+3207: ndx=ndx+1
__pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_ndx, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_ndx, __pyx_t_3); __pyx_t_3 = 0;
+3208: if ndx>=len(xlist):
__pyx_t_9 = PyObject_Length(__pyx_v_xlist); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3208, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_RichCompare(__pyx_v_ndx, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_10) { /* … */ }
+3209: xlist=uninormal.rvs(len(xlist))
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_uninormal, __pyx_n_s_rvs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = PyObject_Length(__pyx_v_xlist); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3209, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_xlist, __pyx_t_2); __pyx_t_2 = 0;
+3210: ndx=0
__Pyx_INCREF(__pyx_int_0); __Pyx_DECREF_SET(__pyx_v_ndx, __pyx_int_0);
+3211: s=(L@x.T).T + mean
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_L, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_mean); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_3); __pyx_t_3 = 0;
+3212: if np.min(s)>0 or allow_negative:
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_min); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_s) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_s); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!__pyx_t_11) { } else { __pyx_t_10 = __pyx_t_11; goto __pyx_L9_bool_binop_done; } __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_allow_negative); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error) __pyx_t_10 = __pyx_t_11; __pyx_L9_bool_binop_done:; if (__pyx_t_10) { /* … */ } } __pyx_L6_break:;
+3213: break
goto __pyx_L6_break;
+3214: samples.append(s)
if (unlikely(!__pyx_v_s)) { __Pyx_RaiseUnboundLocalError("s"); __PYX_ERR(0, 3214, __pyx_L1_error) }
__pyx_t_12 = __Pyx_PyList_Append(__pyx_v_samples, __pyx_v_s); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 3214, __pyx_L1_error)
3215:
+3216: posterior, prior = self.sample_latent(obs, fltr, Tf, infer_result, samples, contactMatrix,
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sample_latent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* … */ __pyx_v_posterior = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_prior = __pyx_t_2; __pyx_t_2 = 0;
+3217: generator, intervention_fun, tangent, inter_steps, nprocesses)
__pyx_t_3 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[12] = {__pyx_t_3, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_samples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_13, 11+__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[12] = {__pyx_t_3, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_samples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_nprocesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_13, 11+__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(11+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_13, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_13, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_13, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_infer_result); __Pyx_GIVEREF(__pyx_v_infer_result); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_13, __pyx_v_infer_result); __Pyx_INCREF(__pyx_v_samples); __Pyx_GIVEREF(__pyx_v_samples); PyTuple_SET_ITEM(__pyx_t_2, 4+__pyx_t_13, __pyx_v_samples); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 5+__pyx_t_13, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_2, 6+__pyx_t_13, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_2, 7+__pyx_t_13, __pyx_v_intervention_fun); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_2, 8+__pyx_t_13, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_2, 9+__pyx_t_13, __pyx_v_inter_steps); __Pyx_INCREF(__pyx_v_nprocesses); __Pyx_GIVEREF(__pyx_v_nprocesses); PyTuple_SET_ITEM(__pyx_t_2, 10+__pyx_t_13, __pyx_v_nprocesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3216, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_2 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_3), 2) < 0) __PYX_ERR(0, 3216, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3216, __pyx_L1_error) __pyx_L12_unpacking_done:; }
3218:
+3219: return samples, posterior, prior
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_samples); __Pyx_GIVEREF(__pyx_v_samples); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_samples); __Pyx_INCREF(__pyx_v_posterior); __Pyx_GIVEREF(__pyx_v_posterior); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_posterior); __Pyx_INCREF(__pyx_v_prior); __Pyx_GIVEREF(__pyx_v_prior); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_prior); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3220:
3221:
3222:
+3223: def latent_evidence_laplace(self, obs, fltr, Tf, infer_result, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_99latent_evidence_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_98latent_evidence_laplace[] = "\n Compute the evidence using a Laplace approximation at the MAP estimate for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n obs: np.array\n The partially observed trajectory.\n fltr: 2d np.array\n The filter for the observation such that\n :math:`F_{ij} x_j (t) = obs_i(t)`\n Tf: float\n Total time of the trajectory\n infer_result: dict\n Dictionary returned by latent_infer\n contactMatrix: callable, optional\n A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.\n Either a contactMatrix or a generator must be specified.\n generator: pyross.contactMatrix, optional\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n Either a contactMatrix or a generator must be specified.\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`,\n where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.\n The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.\n If not set, assume intervention that's constant in time.\n See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is False.\n eps: float or numpy.array, optional\n Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. If not specified, \n \n "" .. code-block:: python\n\n eps = 100*infer_result['flat_params'] \n *numpy.divide(numpy.spacing(infer_result['log_likelihood']),\n infer_result['log_likelihood'])**(0.25) \n\n is used. For `fd_method=\"central\"` it is recommended to use a step-size greater or equal to `eps`. \n Decreasing the step size too small can result in round-off error.\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\". Default is \"central\".\n inter_steps: int, optional\n Intermediate steps between observations for the deterministic forward Euler integration. \n A higher number of intermediate steps will improve the accuracy of the result, but will make \n computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method` \n for the deterministic integration. We have found that forward Euler is generally slower, \n but more stable for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100.\n Returns\n -------\n log_evidence: float\n The log-evidence computed via Laplace approximation at the MAP estimate.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_99latent_evidence_laplace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_evidence_laplace (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_eps,&__pyx_n_s_fd_method,&__pyx_n_s_inter_steps,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_98latent_evidence_laplace(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_eps, PyObject *__pyx_v_fd_method, PyObject *__pyx_v_inter_steps) {
PyObject *__pyx_v_logP_MAPs = NULL;
PyObject *__pyx_v_A = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_evidence_laplace", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_evidence_laplace", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_logP_MAPs);
__Pyx_XDECREF(__pyx_v_A);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3224: generator=None, intervention_fun=None, tangent=False,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_False);
+3225: eps=None, fd_method="central", inter_steps=100):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)__pyx_n_u_central);
values[10] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_evidence_laplace", 0, 4, 11, 1); __PYX_ERR(0, 3223, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_evidence_laplace", 0, 4, 11, 2); __PYX_ERR(0, 3223, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_evidence_laplace", 0, 4, 11, 3); __PYX_ERR(0, 3223, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_evidence_laplace") < 0)) __PYX_ERR(0, 3223, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_contactMatrix = values[4];
__pyx_v_generator = values[5];
__pyx_v_intervention_fun = values[6];
__pyx_v_tangent = values[7];
__pyx_v_eps = values[8];
__pyx_v_fd_method = values[9];
__pyx_v_inter_steps = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_evidence_laplace", 0, 4, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3223, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_evidence_laplace", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_98latent_evidence_laplace(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps);
3226: """
3227: Compute the evidence using a Laplace approximation at the MAP estimate for a SIR type model with partially observed classes. The unobserved classes are treated as latent variables.
3228:
3229: Parameters
3230: ----------
3231: obs: np.array
3232: The partially observed trajectory.
3233: fltr: 2d np.array
3234: The filter for the observation such that
3235: :math:`F_{ij} x_j (t) = obs_i(t)`
3236: Tf: float
3237: Total time of the trajectory
3238: infer_result: dict
3239: Dictionary returned by latent_infer
3240: contactMatrix: callable, optional
3241: A function that returns the contact matrix at time t (input). If specified, control parameters are not inferred.
3242: Either a contactMatrix or a generator must be specified.
3243: generator: pyross.contactMatrix, optional
3244: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
3245: parameters.
3246: Either a contactMatrix or a generator must be specified.
3247: intervention_fun: callable, optional
3248: The calling signature is `intervention_func(t, **kwargs)`,
3249: where t is time and kwargs are other keyword arguments for the function.
3250: The function must return (aW, aS, aO), where aW, aS and aO are (2, M) arrays.
3251: The contact matrices are then rescaled as :math:`aW[0]_i CW_{ij} aW[1]_j` etc.
3252: If not set, assume intervention that's constant in time.
3253: See `contactMatrix.constant_contactMatrix` for details on the keyword parameters.
3254: tangent: bool, optional
3255: Set to True to use tangent space inference. Default is False.
3256: eps: float or numpy.array, optional
3257: Step size for finite differences computation of the hessian with respect to the parameters. Must be either a scalar, or an array of length `len(infer_result['flat_params'])`. If not specified,
3258:
3259: .. code-block:: python
3260:
3261: eps = 100*infer_result['flat_params']
3262: *numpy.divide(numpy.spacing(infer_result['log_likelihood']),
3263: infer_result['log_likelihood'])**(0.25)
3264:
3265: is used. For `fd_method="central"` it is recommended to use a step-size greater or equal to `eps`.
3266: Decreasing the step size too small can result in round-off error.
3267: fd_method: str, optional
3268: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central". Default is "central".
3269: inter_steps: int, optional
3270: Intermediate steps between observations for the deterministic forward Euler integration.
3271: A higher number of intermediate steps will improve the accuracy of the result, but will make
3272: computations slower. Setting `inter_steps=0` will fall back to the method accessible via `det_method`
3273: for the deterministic integration. We have found that forward Euler is generally slower,
3274: but more stable for derivatives with respect to parameters than the variable step size integrators used elsewhere in pyross. Default is 100.
3275: Returns
3276: -------
3277: log_evidence: float
3278: The log-evidence computed via Laplace approximation at the MAP estimate.
3279: """
+3280: logP_MAPs = infer_result['log_posterior']
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_log_posterior); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_logP_MAPs = __pyx_t_1; __pyx_t_1 = 0;
+3281: A = self.latent_hessian(obs, fltr, Tf, infer_result, contactMatrix,
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_hessian); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
3282: generator, intervention_fun, tangent, eps, fd_method,
+3283: inter_steps)
__pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[12] = {__pyx_t_3, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 11+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[12] = {__pyx_t_3, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_eps, __pyx_v_fd_method, __pyx_v_inter_steps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 11+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(11+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_infer_result); __Pyx_GIVEREF(__pyx_v_infer_result); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_infer_result); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_intervention_fun); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_eps); __Pyx_INCREF(__pyx_v_fd_method); __Pyx_GIVEREF(__pyx_v_fd_method); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_fd_method); __Pyx_INCREF(__pyx_v_inter_steps); __Pyx_GIVEREF(__pyx_v_inter_steps); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_inter_steps); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_A = __pyx_t_1; __pyx_t_1 = 0;
+3284: k = A.shape[0]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_A, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_k = __pyx_t_2; __pyx_t_2 = 0;
3285:
+3286: return logP_MAPs - 0.5*np.log(np.linalg.det(A)) + 0.5*k*np.log(2*np.pi)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linalg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_det); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_v_A) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_A); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Subtract(__pyx_v_logP_MAPs, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3287:
3288:
+3289: def minus_logp_red(self, parameters, np.ndarray x0, np.ndarray obs,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_101minus_logp_red(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_100minus_logp_red[] = "Computes -logp for a latent trajectory\n\n Parameters\n ----------\n parameters: dict\n A dictionary of parameter values, same as the ones required for initialisation.\n x0: numpy.array\n Initial conditions\n obs: numpy.array\n The observed trajectory without the initial datapoint\n fltr: boolean sequence or array\n True for observed and False for unobserved.\n e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n The total time of the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n\n Returns\n -------\n minus_logp: float\n -log(p) for the observed trajectory with the given parameters and initial conditions\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_101minus_logp_red(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyArrayObject *__pyx_v_x0 = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_objective = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minus_logp_red (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_x0,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_objective,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_100minus_logp_red(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, PyArrayObject *__pyx_v_x0, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_objective) {
CYTHON_UNUSED Py_ssize_t __pyx_v_nClass;
PyObject *__pyx_v_obs0 = NULL;
PyObject *__pyx_v_x0_obs = NULL;
double __pyx_v_minus_logp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minus_logp_red", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.minus_logp_red", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_x0_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3290: np.ndarray fltr, double Tf, contactMatrix, tangent=False, objective='likelihood'):
values[6] = ((PyObject *)Py_False);
values[7] = ((PyObject *)__pyx_n_u_likelihood);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, 1); __PYX_ERR(0, 3289, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, 2); __PYX_ERR(0, 3289, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, 3); __PYX_ERR(0, 3289, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, 4); __PYX_ERR(0, 3289, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, 5); __PYX_ERR(0, 3289, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objective);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "minus_logp_red") < 0)) __PYX_ERR(0, 3289, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_x0 = ((PyArrayObject *)values[1]);
__pyx_v_obs = ((PyArrayObject *)values[2]);
__pyx_v_fltr = ((PyArrayObject *)values[3]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3290, __pyx_L3_error)
__pyx_v_contactMatrix = values[5];
__pyx_v_tangent = values[6];
__pyx_v_objective = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3289, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.minus_logp_red", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x0), __pyx_ptype_5numpy_ndarray, 1, "x0", 0))) __PYX_ERR(0, 3289, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 3289, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 3290, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_100minus_logp_red(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_x0, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_objective);
3291: """Computes -logp for a latent trajectory
3292:
3293: Parameters
3294: ----------
3295: parameters: dict
3296: A dictionary of parameter values, same as the ones required for initialisation.
3297: x0: numpy.array
3298: Initial conditions
3299: obs: numpy.array
3300: The observed trajectory without the initial datapoint
3301: fltr: boolean sequence or array
3302: True for observed and False for unobserved.
3303: e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]
3304: Tf: float
3305: The total time of the trajectory
3306: contactMatrix: callable
3307: A function that returns the contact matrix at time t (input).
3308: tangent: bool, optional
3309: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
3310:
3311: Returns
3312: -------
3313: minus_logp: float
3314: -log(p) for the observed trajectory with the given parameters and initial conditions
3315: """
3316:
3317: cdef double minus_log_p
+3318: cdef Py_ssize_t nClass=int(self.dim/self.M)
__pyx_v_nClass = (__pyx_v_self->dim / __pyx_v_self->M);
+3319: self.contactMatrix = contactMatrix
__Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_v_contactMatrix;
+3320: fltr, obs, obs0 = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_fltr), ((PyObject *)__pyx_v_obs)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_fltr)); __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_obs)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3320, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 3320, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3320, __pyx_L1_error) __pyx_L4_unpacking_done:; } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3320, __pyx_L1_error) if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3320, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_5)); __pyx_t_5 = 0; __pyx_v_obs0 = __pyx_t_3; __pyx_t_3 = 0;
3321:
3322: # check that x0 is consistent with obs0
+3323: x0_obs = fltr[0].dot(x0)
__pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dot); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_v_x0)) : __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_x0)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x0_obs = __pyx_t_1; __pyx_t_1 = 0;
+3324: if not np.allclose(x0_obs, obs0):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_allclose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x0_obs, __pyx_v_obs0}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x0_obs, __pyx_v_obs0}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_x0_obs); __Pyx_GIVEREF(__pyx_v_x0_obs); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_v_x0_obs); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_obs0); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = ((!__pyx_t_8) != 0); if (__pyx_t_9) { /* … */ }
+3325: print('x0 not consistent with obs0. '
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_x0_not_consistent_with_obs0_Usin); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30);
3326: 'Using x0 in the calculation of logp...')
+3327: self.set_params(parameters)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3328: if objective == 'likelihood':
__pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_likelihood, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3328, __pyx_L1_error) if (__pyx_t_9) { /* … */ goto __pyx_L6; }
+3329: minus_logp = self._obtain_logp_for_lat_traj(x0, obs, fltr[1:], Tf, tangent)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3329, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_obs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3329, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3329, __pyx_L1_error) __pyx_t_13.__pyx_n = 1; __pyx_t_13.tangent = __pyx_v_tangent; __pyx_t_12 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_logp_for_lat_traj(__pyx_v_self, __pyx_t_10, __pyx_t_11, ((PyArrayObject *)__pyx_t_1), __pyx_v_Tf, &__pyx_t_13); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_minus_logp = __pyx_t_12;
+3330: elif objective == 'least_squares':
__pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_least_squares, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3330, __pyx_L1_error) if (__pyx_t_9) { /* … */ goto __pyx_L6; }
+3331: minus_logp = self._obtain_square_dev_for_lat_traj(x0, obs, fltr[1:], Tf)
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3331, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_obs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3331, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3331, __pyx_L1_error) __pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_square_dev_for_lat_traj(__pyx_v_self, __pyx_t_11, __pyx_t_10, ((PyArrayObject *)__pyx_t_1), __pyx_v_Tf); __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3332: elif objective == 'least_squares_diff':
__pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_objective, __pyx_n_u_least_squares_diff, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3332, __pyx_L1_error) if (likely(__pyx_t_9)) { /* … */ goto __pyx_L6; }
+3333: minus_logp = self._obtain_square_dev_for_lat_traj_diff(x0, obs, fltr[1:], Tf)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3333, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_obs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3333, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3333, __pyx_L1_error) __pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_obtain_square_dev_for_lat_traj_diff(__pyx_v_self, __pyx_t_10, __pyx_t_11, ((PyArrayObject *)__pyx_t_1), __pyx_v_Tf); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3334: else:
+3335: raise Exception('Unknown objective')
/*else*/ {
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3335, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 3335, __pyx_L1_error)
}
__pyx_L6:;
+3336: return minus_logp
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_minus_logp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3337:
+3338: def sample_endpoints(self, obs, fltr, Tf, infer_result, nsamples, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_103sample_endpoints(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_103sample_endpoints(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
CYTHON_UNUSED PyObject *__pyx_v_tangent = 0;
CYTHON_UNUSED PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_endpoints (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_nsamples,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,0};
PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_102sample_endpoints(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, CYTHON_UNUSED PyObject *__pyx_v_tangent, CYTHON_UNUSED PyObject *__pyx_v_inter_steps) {
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_x0 = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_mean = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_null_space = NULL;
PyObject *__pyx_v_known_space = NULL;
PyObject *__pyx_v_partial_inits = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_endpoints", 0);
__Pyx_INCREF(__pyx_v_obs);
__Pyx_INCREF(__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_endpoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_null_space);
__Pyx_XDECREF(__pyx_v_known_space);
__Pyx_XDECREF(__pyx_v_partial_inits);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_obs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3339: generator=None, intervention_fun=None, tangent=False,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)__pyx_int_100);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_endpoints", 0, 5, 10, 1); __PYX_ERR(0, 3338, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_endpoints", 0, 5, 10, 2); __PYX_ERR(0, 3338, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_endpoints", 0, 5, 10, 3); __PYX_ERR(0, 3338, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_endpoints", 0, 5, 10, 4); __PYX_ERR(0, 3338, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sample_endpoints") < 0)) __PYX_ERR(0, 3338, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_nsamples = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_inter_steps = values[9];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("sample_endpoints", 0, 5, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3338, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_endpoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_102sample_endpoints(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_nsamples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps);
3340: inter_steps=100):
3341: cdef Py_ssize_t i
+3342: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_intervention_fun); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3343: x0 = infer_result['x0'].copy()
__pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_x0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
+3344: fltr, obs, _ = pyross.utils.process_latent_data(fltr, obs)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_process_latent_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_fltr, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_obs); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3344, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_2 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < 0) __PYX_ERR(0, 3344, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3344, __pyx_L1_error) __pyx_L4_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_obs, __pyx_t_3); __pyx_t_3 = 0; __pyx_v__ = __pyx_t_2; __pyx_t_2 = 0;
+3345: self.set_params(infer_result['params_dict'])
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3346: mean, cov, null_space, known_space = self._mean_cov_for_lat_endpoint(x0, obs, fltr[1:], Tf)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean_cov_for_lat_endpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_x0, __pyx_v_obs, __pyx_t_3, __pyx_v_Tf}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_x0, __pyx_v_obs, __pyx_t_3, __pyx_v_Tf}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_x0); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_obs); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_4, __pyx_v_Tf); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3346, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); __pyx_t_5 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_5}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_5}; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_8)->tp_iternext; for (index=0; index < 4; index++) { PyObject* item = __pyx_t_7(__pyx_t_8); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_8), 4) < 0) __PYX_ERR(0, 3346, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3346, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_mean = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_cov = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_null_space = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_known_space = __pyx_t_5; __pyx_t_5 = 0;
+3347: partial_inits = np.random.multivariate_normal(mean, cov, nsamples)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_mean, __pyx_v_cov, __pyx_v_nsamples}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_mean, __pyx_v_cov, __pyx_v_nsamples}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_mean); __Pyx_INCREF(__pyx_v_cov); __Pyx_GIVEREF(__pyx_v_cov); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_cov); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_4, __pyx_v_nsamples); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_partial_inits = __pyx_t_1; __pyx_t_1 = 0;
+3348: inits = (null_space.T@partial_inits.T).T + known_space
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_null_space, __pyx_n_s_T); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_partial_inits, __pyx_n_s_T); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_T); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_known_space); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_6; __pyx_t_6 = 0;
+3349: for i in range(nsamples):
__pyx_t_9 = __Pyx_PyInt_As_long(__pyx_v_nsamples); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 3349, __pyx_L1_error) __pyx_t_10 = __pyx_t_9; for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
+3350: while not self._all_positive(inits[i]):
while (1) {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_positive); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3350, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_inits, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3350, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3350, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 3350, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_13 = ((!__pyx_t_12) != 0);
if (!__pyx_t_13) break;
+3351: partial_inits = np.random.multivariate_normal(mean, cov)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_mean, __pyx_v_cov}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_mean, __pyx_v_cov}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_6); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_mean); __Pyx_INCREF(__pyx_v_cov); __Pyx_GIVEREF(__pyx_v_cov); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_cov); __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_partial_inits, __pyx_t_6); __pyx_t_6 = 0;
+3352: inits[i] = (null_space.T@partial_inits) + known_space
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_null_space, __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_6, __pyx_v_partial_inits); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_known_space); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(__Pyx_SetItemInt(__pyx_v_inits, __pyx_v_i, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 3352, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } }
+3353: return inits
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_inits); __pyx_r = __pyx_v_inits; goto __pyx_L0;
3354:
+3355: def sample_trajs(self, obs, fltr, Tf, infer_result, nsamples, contactMatrix=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_105sample_trajs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_105sample_trajs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_infer_result = 0;
PyObject *__pyx_v_nsamples = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
CYTHON_UNUSED PyObject *__pyx_v_tangent = 0;
CYTHON_UNUSED PyObject *__pyx_v_inter_steps = 0;
PyObject *__pyx_v_require_positive = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_trajs (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_infer_result,&__pyx_n_s_nsamples,&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,&__pyx_n_s_require_positive,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_104sample_trajs(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_infer_result, PyObject *__pyx_v_nsamples, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, CYTHON_UNUSED PyObject *__pyx_v_tangent, CYTHON_UNUSED PyObject *__pyx_v_inter_steps, PyObject *__pyx_v_require_positive) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_mean = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_full_null_space = NULL;
PyObject *__pyx_v_known_space = NULL;
PyObject *__pyx_v_trajs = NULL;
PyObject *__pyx_v_partial_trajs = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("sample_trajs", 0);
__Pyx_INCREF(__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_trajs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_mean);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_full_null_space);
__Pyx_XDECREF(__pyx_v_known_space);
__Pyx_XDECREF(__pyx_v_trajs);
__Pyx_XDECREF(__pyx_v_partial_trajs);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3356: generator=None, intervention_fun=None, tangent=False,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)__pyx_int_100);
+3357: inter_steps=100, require_positive=True):
values[10] = ((PyObject *)Py_True);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_trajs", 0, 5, 11, 1); __PYX_ERR(0, 3355, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_trajs", 0, 5, 11, 2); __PYX_ERR(0, 3355, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_result)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_trajs", 0, 5, 11, 3); __PYX_ERR(0, 3355, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nsamples)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("sample_trajs", 0, 5, 11, 4); __PYX_ERR(0, 3355, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_require_positive);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sample_trajs") < 0)) __PYX_ERR(0, 3355, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_obs = values[0];
__pyx_v_fltr = values[1];
__pyx_v_Tf = values[2];
__pyx_v_infer_result = values[3];
__pyx_v_nsamples = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_generator = values[6];
__pyx_v_intervention_fun = values[7];
__pyx_v_tangent = values[8];
__pyx_v_inter_steps = values[9];
__pyx_v_require_positive = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("sample_trajs", 0, 5, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3355, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.sample_trajs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_104sample_trajs(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_infer_result, __pyx_v_nsamples, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_inter_steps, __pyx_v_require_positive);
+3358: cdef Py_ssize_t i, Nf=obs.shape[0]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obs, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_Nf = __pyx_t_3;
+3359: self._process_contact_matrix(contactMatrix, generator, intervention_fun)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_contact_matrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_generator); __Pyx_GIVEREF(__pyx_v_generator); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_generator); __Pyx_INCREF(__pyx_v_intervention_fun); __Pyx_GIVEREF(__pyx_v_intervention_fun); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_intervention_fun); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3360: x0 = infer_result['x0'].copy()
__pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_x0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_copy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_x0 = __pyx_t_2; __pyx_t_2 = 0;
+3361: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_t_1}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_t_1}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_v_fltr); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0;
+3362: self.set_params(infer_result['params_dict'])
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_infer_result, __pyx_n_u_params_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3363: mean, cov, full_null_space, known_space = self._mean_cov_for_lat_traj(x0, obs[1:], fltr[1:], Tf)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean_cov_for_lat_traj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_obs, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_x0, __pyx_t_7, __pyx_t_1, __pyx_v_Tf}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_x0, __pyx_t_7, __pyx_t_1, __pyx_v_Tf}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_v_x0); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_5, __pyx_v_Tf); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3363, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_6,&__pyx_t_8,&__pyx_t_1,&__pyx_t_7}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_6,&__pyx_t_8,&__pyx_t_1,&__pyx_t_7}; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; for (index=0; index < 4; index++) { PyObject* item = __pyx_t_9(__pyx_t_4); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 4) < 0) __PYX_ERR(0, 3363, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3363, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_mean = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_cov = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_full_null_space = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_known_space = __pyx_t_7; __pyx_t_7 = 0;
+3364: trajs = np.full((nsamples, (Nf-1), self.dim), -1, dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_full); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_nsamples); __Pyx_GIVEREF(__pyx_v_nsamples); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_nsamples); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_neg_1); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_trajs = __pyx_t_2; __pyx_t_2 = 0;
+3365: if require_positive:
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_require_positive); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3365, __pyx_L1_error) if (__pyx_t_10) { /* … */ goto __pyx_L5; }
+3366: for i in range(nsamples):
__pyx_t_11 = __Pyx_PyInt_As_long(__pyx_v_nsamples); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 3366, __pyx_L1_error) __pyx_t_12 = __pyx_t_11; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_12; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3;
+3367: while not all(map(self._all_positive, trajs[i])):
while (1) {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_all_positive); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = __Pyx_GetItemInt(__pyx_v_trajs, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_8);
__pyx_t_2 = 0;
__pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_all, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3367, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_13 = ((!__pyx_t_10) != 0);
if (!__pyx_t_13) break;
+3368: partial_trajs = np.random.multivariate_normal(mean, cov)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_mean, __pyx_v_cov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_mean, __pyx_v_cov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_mean); __Pyx_GIVEREF(__pyx_v_mean); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_v_mean); __Pyx_INCREF(__pyx_v_cov); __Pyx_GIVEREF(__pyx_v_cov); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_v_cov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_partial_trajs, __pyx_t_1); __pyx_t_1 = 0;
+3369: trajs[i] = (full_null_space.T@partial_trajs + known_space).reshape((Nf-1, self.dim))
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_null_space, __pyx_n_s_T); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_8, __pyx_v_partial_trajs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_v_known_space); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); __pyx_t_8 = 0; __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(__Pyx_SetItemInt(__pyx_v_trajs, __pyx_v_i, __pyx_t_1, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 3369, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } }
3370: else:
+3371: partial_trajs = np.random.default_rng().multivariate_normal(mean, cov, nsamples, method='eigh')
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_default_rng); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_multivariate_normal); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_mean);
__Pyx_GIVEREF(__pyx_v_mean);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean);
__Pyx_INCREF(__pyx_v_cov);
__Pyx_GIVEREF(__pyx_v_cov);
PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cov);
__Pyx_INCREF(__pyx_v_nsamples);
__Pyx_GIVEREF(__pyx_v_nsamples);
PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_nsamples);
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_method, __pyx_n_u_eigh) < 0) __PYX_ERR(0, 3371, __pyx_L1_error)
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_partial_trajs = __pyx_t_2;
__pyx_t_2 = 0;
+3372: for i in range(nsamples):
__pyx_t_11 = __Pyx_PyInt_As_long(__pyx_v_nsamples); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 3372, __pyx_L1_error) __pyx_t_12 = __pyx_t_11; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_12; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3;
+3373: trajs[i] = (full_null_space.T@partial_trajs[i] + known_space).reshape((Nf-1, self.dim))
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_null_space, __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_partial_trajs, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_t_7, __pyx_v_known_space); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(__Pyx_SetItemInt(__pyx_v_trajs, __pyx_v_i, __pyx_t_2, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } } __pyx_L5:;
+3374: return trajs
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_trajs); __pyx_r = __pyx_v_trajs; goto __pyx_L0;
3375:
3376:
+3377: def get_mean_inits(self, init_priors, np.ndarray obs0, np.ndarray fltr0):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_107get_mean_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_106get_mean_inits[] = "Construct full initial conditions from the prior dict\n\n Parameters\n ----------\n init_priors: dict\n A dictionary for priors for initial conditions.\n Same as the `init_priors` passed to `latent_infer`.\n In this function, only takes the mean.\n obs0: numpy.array\n Observed initial conditions.\n fltr0: numpy.array\n Filter for the observed initial conditions.\n\n Returns\n -------\n x0: numpy.array\n Full initial conditions.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_107get_mean_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_init_priors = 0;
PyArrayObject *__pyx_v_obs0 = 0;
PyArrayObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("get_mean_inits (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_init_priors,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_priors)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("get_mean_inits", 1, 3, 3, 1); __PYX_ERR(0, 3377, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("get_mean_inits", 1, 3, 3, 2); __PYX_ERR(0, 3377, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_mean_inits") < 0)) __PYX_ERR(0, 3377, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_init_priors = values[0];
__pyx_v_obs0 = ((PyArrayObject *)values[1]);
__pyx_v_fltr0 = ((PyArrayObject *)values[2]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("get_mean_inits", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3377, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.get_mean_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs0), __pyx_ptype_5numpy_ndarray, 1, "obs0", 0))) __PYX_ERR(0, 3377, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr0), __pyx_ptype_5numpy_ndarray, 1, "fltr0", 0))) __PYX_ERR(0, 3377, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_106get_mean_inits(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_init_priors, __pyx_v_obs0, __pyx_v_fltr0);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_106get_mean_inits(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_init_priors, PyArrayObject *__pyx_v_obs0, PyArrayObject *__pyx_v_fltr0) {
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_init_mean = NULL;
PyObject *__pyx_v_init_flags = NULL;
PyObject *__pyx_v_init_fltrs = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("get_mean_inits", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SIR_type.get_mean_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_init_mean);
__Pyx_XDECREF(__pyx_v_init_flags);
__Pyx_XDECREF(__pyx_v_init_fltrs);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3378: """Construct full initial conditions from the prior dict
3379:
3380: Parameters
3381: ----------
3382: init_priors: dict
3383: A dictionary for priors for initial conditions.
3384: Same as the `init_priors` passed to `latent_infer`.
3385: In this function, only takes the mean.
3386: obs0: numpy.array
3387: Observed initial conditions.
3388: fltr0: numpy.array
3389: Filter for the observed initial conditions.
3390:
3391: Returns
3392: -------
3393: x0: numpy.array
3394: Full initial conditions.
3395: """
+3396: _, init_mean, _, _, _, _,init_flags, init_fltrs \
__pyx_v__ = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_init_mean = __pyx_t_8; __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_init_flags = __pyx_t_10; __pyx_t_10 = 0; __pyx_v_init_fltrs = __pyx_t_11; __pyx_t_11 = 0;
+3397: = pyross.utils.parse_init_prior_dict(init_priors, self.dim, len(obs0))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_parse_init_prior_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_obs0)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3397, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_init_priors, __pyx_t_3, __pyx_t_5}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_init_priors, __pyx_t_3, __pyx_t_5}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_init_priors); __Pyx_GIVEREF(__pyx_v_init_priors); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_init_priors); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 8)) { if (size > 8) __Pyx_RaiseTooManyValuesError(8); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3396, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 6); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 7); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); __pyx_t_3 = PyList_GET_ITEM(sequence, 3); __pyx_t_6 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); __pyx_t_10 = PyList_GET_ITEM(sequence, 6); __pyx_t_11 = PyList_GET_ITEM(sequence, 7); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); #else { Py_ssize_t i; PyObject** temps[8] = {&__pyx_t_2,&__pyx_t_8,&__pyx_t_5,&__pyx_t_3,&__pyx_t_6,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; for (i=0; i < 8; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 3396, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[8] = {&__pyx_t_2,&__pyx_t_8,&__pyx_t_5,&__pyx_t_3,&__pyx_t_6,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; __pyx_t_12 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; for (index=0; index < 8; index++) { PyObject* item = __pyx_t_13(__pyx_t_12); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 8) < 0) __PYX_ERR(0, 3396, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3396, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+3398: x0 = self._construct_inits(init_mean, init_flags, init_fltrs, obs0, fltr0)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_inits); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_init_mean, __pyx_v_init_flags, __pyx_v_init_fltrs, ((PyObject *)__pyx_v_obs0), ((PyObject *)__pyx_v_fltr0)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_init_mean, __pyx_v_init_flags, __pyx_v_init_fltrs, ((PyObject *)__pyx_v_obs0), ((PyObject *)__pyx_v_fltr0)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_9 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_init_mean); __Pyx_GIVEREF(__pyx_v_init_mean); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_v_init_mean); __Pyx_INCREF(__pyx_v_init_flags); __Pyx_GIVEREF(__pyx_v_init_flags); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_v_init_flags); __Pyx_INCREF(__pyx_v_init_fltrs); __Pyx_GIVEREF(__pyx_v_init_fltrs); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_7, __pyx_v_init_fltrs); __Pyx_INCREF(((PyObject *)__pyx_v_obs0)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs0)); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_7, ((PyObject *)__pyx_v_obs0)); __Pyx_INCREF(((PyObject *)__pyx_v_fltr0)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr0)); PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_7, ((PyObject *)__pyx_v_fltr0)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
+3399: return x0
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_x0); __pyx_r = __pyx_v_x0; goto __pyx_L0;
3400:
+3401: cpdef find_fastest_growing_lin_mode(self, double t):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_109find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_arg_t); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_find_fastest_growing_lin_mode(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, double __pyx_v_t, int __pyx_skip_dispatch) {
PyArrayObject *__pyx_v_x0 = 0;
Py_ssize_t __pyx_v_S_index;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_sign = NULL;
PyObject *__pyx_v_eigvec = NULL;
__Pyx_LocalBuf_ND __pyx_pybuffernd_x0;
__Pyx_Buffer __pyx_pybuffer_x0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode", 0);
__pyx_pybuffer_x0.pybuffer.buf = NULL;
__pyx_pybuffer_x0.refcount = 0;
__pyx_pybuffernd_x0.data = NULL;
__pyx_pybuffernd_x0.rcbuffer = &__pyx_pybuffer_x0;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_fastest_growing_lin_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_109find_fastest_growing_lin_mode)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__pyx_L2:;
__Pyx_XDECREF((PyObject *)__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_sign);
__Pyx_XDECREF(__pyx_v_eigvec);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_109find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_arg_t); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_109find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_arg_t) {
double __pyx_v_t;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode (wrapper)", 0);
assert(__pyx_arg_t); {
__pyx_v_t = __pyx_PyFloat_AsDouble(__pyx_arg_t); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3401, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_108find_fastest_growing_lin_mode(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((double)__pyx_v_t));
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_108find_fastest_growing_lin_mode(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, double __pyx_v_t) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_find_fastest_growing_lin_mode(__pyx_v_self, __pyx_v_t, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3402: cdef:
3403: np.ndarray [DTYPE_t, ndim=1] x0
+3404: Py_ssize_t S_index, M=self.M
__pyx_t_6 = __pyx_v_self->M; __pyx_v_M = __pyx_t_6;
3405: # assume no infected at the start and compute eig vecs for the infectious species
+3406: x0 = np.zeros((self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3406, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_v_x0, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0; } __pyx_pybuffernd_x0.diminfo[0].strides = __pyx_pybuffernd_x0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x0.diminfo[0].shape = __pyx_pybuffernd_x0.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3406, __pyx_L1_error) } __pyx_t_7 = 0; __pyx_v_x0 = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+3407: assert 'S' in self.class_index_dict, 'for fastest growing mode, a class "S" needs to be specified'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
if (unlikely(__pyx_v_self->class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 3407, __pyx_L1_error)
}
__pyx_t_12 = (__Pyx_PyDict_ContainsTF(__pyx_n_u_S, __pyx_v_self->class_index_dict, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 3407, __pyx_L1_error)
if (unlikely(!(__pyx_t_12 != 0))) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_for_fastest_growing_mode_a_class);
__PYX_ERR(0, 3407, __pyx_L1_error)
}
}
#endif
+3408: S_index = self.class_index_dict['S']
if (unlikely(__pyx_v_self->class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3408, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3408, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_S_index = __pyx_t_6;
+3409: x0[S_index*M:(S_index+1)*M] = self.fi
__pyx_t_3 = ((PyObject *)__pyx_v_self->fi); __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_S_index * __pyx_v_M)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_S_index + 1) * __pyx_v_M)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PySlice_New(__pyx_t_1, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_x0), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3410: self.compute_jacobian_and_b_matrix(x0, t,
__pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3410, __pyx_L1_error) /* … */ __pyx_t_14.__pyx_n = 2; __pyx_t_14.b_matrix = Py_False; __pyx_t_14.jacobian = Py_True; __pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_t_13, __pyx_v_t, &__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3411: b_matrix=False, jacobian=True)
+3412: sign, eigvec = pyross.utils.largest_real_eig(self.J_mat)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_largest_real_eig); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_self->J_mat)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self->J_mat)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3412, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_15(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_1), 2) < 0) __PYX_ERR(0, 3412, __pyx_L1_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3412, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_sign = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_eigvec = __pyx_t_4; __pyx_t_4 = 0;
+3413: if not sign: # if eigval not positive, just return the zero state
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_sign); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 3413, __pyx_L1_error) __pyx_t_16 = ((!__pyx_t_12) != 0); if (__pyx_t_16) { /* … */ }
+3414: return np.zeros(self.dim)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3415: else:
+3416: if eigvec[S_index*M] > 0:
/*else*/ {
__pyx_t_6 = (__pyx_v_S_index * __pyx_v_M);
__pyx_t_3 = __Pyx_GetItemInt(__pyx_v_eigvec, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3416, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3416, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 3416, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_16) {
/* … */
}
+3417: eigvec = - eigvec
__pyx_t_2 = PyNumber_Negative(__pyx_v_eigvec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_eigvec, __pyx_t_2); __pyx_t_2 = 0;
+3418: return eigvec/np.linalg.norm(eigvec, ord=1)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linalg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_norm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_eigvec); __Pyx_GIVEREF(__pyx_v_eigvec); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_eigvec); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ord, __pyx_int_1) < 0) __PYX_ERR(0, 3418, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_eigvec, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; }
3419:
+3420: def set_lyapunov_method(self, lyapunov_method, rtol=None, max_steps=0):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_111set_lyapunov_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_110set_lyapunov_method[] = "Sets the method used for deterministic integration for the SIR_type model\n\n Parameters\n ----------\n lyapunov_method: str\n The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2', 'RK4', and 'euler'.\n rtol: double, optional\n relative tolerance of the integrator (default 1e-3)\n max_steps: int\n Maximum number of integration steps (total) for the integrator. Default: unlimited (represented as 0)\n Parameters for which the integrator reaches max_steps are disregarded by the optimiser.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_111set_lyapunov_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol = 0;
PyObject *__pyx_v_max_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_lyapunov_method (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol,&__pyx_n_s_max_steps,0};
PyObject* values[3] = {0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_lyapunov_method") < 0)) __PYX_ERR(0, 3420, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_lyapunov_method = values[0];
__pyx_v_rtol = values[1];
__pyx_v_max_steps = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("set_lyapunov_method", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3420, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.set_lyapunov_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_110set_lyapunov_method(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_lyapunov_method, __pyx_v_rtol, __pyx_v_max_steps);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_110set_lyapunov_method(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol, PyObject *__pyx_v_max_steps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_lyapunov_method", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_lyapunov_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3421: """Sets the method used for deterministic integration for the SIR_type model
3422:
3423: Parameters
3424: ----------
3425: lyapunov_method: str
3426: The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2', 'RK4', and 'euler'.
3427: rtol: double, optional
3428: relative tolerance of the integrator (default 1e-3)
3429: max_steps: int
3430: Maximum number of integration steps (total) for the integrator. Default: unlimited (represented as 0)
3431: Parameters for which the integrator reaches max_steps are disregarded by the optimiser.
3432: """
+3433: if lyapunov_method not in ['LSODA', 'RK45', 'RK2', 'RK4', 'euler']:
__Pyx_INCREF(__pyx_v_lyapunov_method); __pyx_t_1 = __pyx_v_lyapunov_method; __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_LSODA, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3433, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK45, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3433, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3433, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3433, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_euler, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3433, __pyx_L1_error) __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+3434: raise Exception('{} not implemented. Choose between LSODA, RK45, RK2, RK4, and euler'.format(lyapunov_method))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_not_implemented_Choose_between, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_lyapunov_method) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 3434, __pyx_L1_error)
+3435: self.lyapunov_method=lyapunov_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_lyapunov_method))||((__pyx_v_lyapunov_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_lyapunov_method)->tp_name), 0))) __PYX_ERR(0, 3435, __pyx_L1_error) __pyx_t_4 = __pyx_v_lyapunov_method; __Pyx_INCREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->lyapunov_method); __Pyx_DECREF(__pyx_v_self->lyapunov_method); __pyx_v_self->lyapunov_method = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+3436: if rtol is not None:
__pyx_t_3 = (__pyx_v_rtol != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+3437: self.rtol_lyapunov = rtol
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_rtol); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3437, __pyx_L1_error) __pyx_v_self->rtol_lyapunov = __pyx_t_6;
+3438: if max_steps is not None:
__pyx_t_2 = (__pyx_v_max_steps != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
}
+3439: self.max_steps_lyapunov = max_steps
__pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_max_steps); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 3439, __pyx_L1_error) __pyx_v_self->max_steps_lyapunov = __pyx_t_7;
3440:
+3441: def set_det_method(self, det_method, rtol=None, max_steps=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_113set_det_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_112set_det_method[] = "Sets the method used for deterministic integration for the SIR_type model\n\n Parameters\n ----------\n det_method: str\n The name of the integration method. Choose between 'LSODA' and 'RK45'.\n rtol: double, optional\n relative tolerance of the integrator (default 1e-3)\n max_steps: int, optional\n Maximum number of integration steps (total) for the integrator. Default: unlimited (represented as 0)\n Parameters for which the integrator reaches max_steps are disregarded by the optimiser.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_113set_det_method(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_rtol = 0;
PyObject *__pyx_v_max_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_method (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_det_method,&__pyx_n_s_rtol,&__pyx_n_s_max_steps,0};
PyObject* values[3] = {0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_det_method") < 0)) __PYX_ERR(0, 3441, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_det_method = values[0];
__pyx_v_rtol = values[1];
__pyx_v_max_steps = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("set_det_method", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3441, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.set_det_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_112set_det_method(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_det_method, __pyx_v_rtol, __pyx_v_max_steps);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_112set_det_method(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_det_method, PyObject *__pyx_v_rtol, PyObject *__pyx_v_max_steps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_method", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_det_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3442: """Sets the method used for deterministic integration for the SIR_type model
3443:
3444: Parameters
3445: ----------
3446: det_method: str
3447: The name of the integration method. Choose between 'LSODA' and 'RK45'.
3448: rtol: double, optional
3449: relative tolerance of the integrator (default 1e-3)
3450: max_steps: int, optional
3451: Maximum number of integration steps (total) for the integrator. Default: unlimited (represented as 0)
3452: Parameters for which the integrator reaches max_steps are disregarded by the optimiser.
3453: """
+3454: if det_method not in ['LSODA', 'RK45']:
__Pyx_INCREF(__pyx_v_det_method); __pyx_t_1 = __pyx_v_det_method; __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_LSODA, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3454, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK45, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3454, __pyx_L1_error) __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+3455: raise Exception('{} not implemented. Choose between LSODA and RK45'.format(det_method))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_not_implemented_Choose_between_2, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_det_method) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_det_method); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 3455, __pyx_L1_error)
+3456: self.det_method=det_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_det_method))||((__pyx_v_det_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_det_method)->tp_name), 0))) __PYX_ERR(0, 3456, __pyx_L1_error) __pyx_t_4 = __pyx_v_det_method; __Pyx_INCREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->det_method); __Pyx_DECREF(__pyx_v_self->det_method); __pyx_v_self->det_method = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+3457: if rtol is not None:
__pyx_t_3 = (__pyx_v_rtol != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+3458: self.rtol_det = rtol
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_rtol); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3458, __pyx_L1_error) __pyx_v_self->rtol_det = __pyx_t_6;
+3459: if max_steps is not None:
__pyx_t_2 = (__pyx_v_max_steps != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
}
+3460: self.max_steps_det = max_steps
__pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_max_steps); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 3460, __pyx_L1_error) __pyx_v_self->max_steps_det = __pyx_t_7;
3461:
3462:
+3463: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_115set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_114set_det_model[] = "\n Sets the internal deterministic model with given epidemiological parameters\n\n Parameters\n ----------\n parameters: dict\n A dictionary of parameter values, same as the ones required for initialisation.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_115set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_114set_det_model(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_114set_det_model(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3464: """
3465: Sets the internal deterministic model with given epidemiological parameters
3466:
3467: Parameters
3468: ----------
3469: parameters: dict
3470: A dictionary of parameter values, same as the ones required for initialisation.
3471: """
+3472: raise NotImplementedError("Please Implement set_det_model in subclass")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3472, __pyx_L1_error) /* … */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_Please_Implement_set_det_model_i); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31);
3473:
+3474: def set_contact_matrix(self, contactMatrix):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_117set_contact_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_contactMatrix); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_116set_contact_matrix[] = "\n Sets the internal contact matrix\n\n Parameters\n ----------\n contactMatrix: callable\n A function that returns the contact matrix given time, with call\n signature contactMatrix(t).\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_117set_contact_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_contact_matrix (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_116set_contact_matrix(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_contactMatrix));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_116set_contact_matrix(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_contact_matrix", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3475: """
3476: Sets the internal contact matrix
3477:
3478: Parameters
3479: ----------
3480: contactMatrix: callable
3481: A function that returns the contact matrix given time, with call
3482: signature contactMatrix(t).
3483: """
+3484: self.contactMatrix = contactMatrix
__Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_v_contactMatrix;
3485:
+3486: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_119make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_119make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_118make_params_dict(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_118make_params_dict(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3487: raise NotImplementedError("Please Implement make_params_dict in subclass")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3487, __pyx_L1_error) /* … */ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_Please_Implement_make_params_dic); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 3487, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32);
3488:
+3489: def fill_params_dict(self, keys, params, return_additional_params=False):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_121fill_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_120fill_params_dict[] = "Returns a full dictionary for epidemiological parameters with some changed values\n\n Parameters\n ----------\n keys: list of String\n A list of names of parameters to be changed.\n params: numpy.array of list\n An array of the same size as keys for the updated value.\n return_additional_params: boolean, optional (default = False)\n Handling of parameters that are not model parameters (e.g. control parameters). False: raise exception, True: return second dictionary with other parameters\n\n Returns\n -------\n full_parameters: dict\n A dictionary of epidemiological parameters.\n For parameter names specified in `keys`, set the values to be the ones in `params`;\n for the others, use the values stored in the class.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_121fill_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_return_additional_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_params,&__pyx_n_s_return_additional_params,0};
PyObject* values[3] = {0,0,0};
values[2] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("fill_params_dict", 0, 2, 3, 1); __PYX_ERR(0, 3489, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_return_additional_params);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill_params_dict") < 0)) __PYX_ERR(0, 3489, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_params = values[1];
__pyx_v_return_additional_params = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("fill_params_dict", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3489, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_120fill_params_dict(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_params, __pyx_v_return_additional_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_120fill_params_dict(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_params, PyObject *__pyx_v_return_additional_params) {
PyObject *__pyx_v_full_parameters = NULL;
PyObject *__pyx_v_others = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_full_parameters);
__Pyx_XDECREF(__pyx_v_others);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3490: """Returns a full dictionary for epidemiological parameters with some changed values
3491:
3492: Parameters
3493: ----------
3494: keys: list of String
3495: A list of names of parameters to be changed.
3496: params: numpy.array of list
3497: An array of the same size as keys for the updated value.
3498: return_additional_params: boolean, optional (default = False)
3499: Handling of parameters that are not model parameters (e.g. control parameters). False: raise exception, True: return second dictionary with other parameters
3500:
3501: Returns
3502: -------
3503: full_parameters: dict
3504: A dictionary of epidemiological parameters.
3505: For parameter names specified in `keys`, set the values to be the ones in `params`;
3506: for the others, use the values stored in the class.
3507: """
+3508: full_parameters = self.make_params_dict()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_full_parameters = __pyx_t_1; __pyx_t_1 = 0;
+3509: others = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_others = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3510: for (i, k) in enumerate(keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3510, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3510, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3510, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3510, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3511: if k in self.param_keys:
__pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_k, __pyx_v_self->param_keys, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3511, __pyx_L1_error) __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { /* … */ goto __pyx_L5; }
+3512: full_parameters[k] = params[i]
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_v_full_parameters, __pyx_v_k, __pyx_t_3) < 0)) __PYX_ERR(0, 3512, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3513: elif return_additional_params:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_return_additional_params); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 3513, __pyx_L1_error) if (likely(__pyx_t_7)) { /* … */ goto __pyx_L5; }
+3514: others[k] = params[i]
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyDict_SetItem(__pyx_v_others, __pyx_v_k, __pyx_t_3) < 0)) __PYX_ERR(0, 3514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3515: else:
+3516: raise Exception('{} is not a parameter of the model'.format(k))
/*else*/ {
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_is_not_a_parameter_of_the_model, __pyx_n_s_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3516, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
__pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_v_k) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_k);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3516, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3516, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_ERR(0, 3516, __pyx_L1_error)
}
__pyx_L5:;
+3517: if return_additional_params:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_return_additional_params); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 3517, __pyx_L1_error) if (__pyx_t_7) { /* … */ }
+3518: return full_parameters, others
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_full_parameters); __Pyx_GIVEREF(__pyx_v_full_parameters); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_full_parameters); __Pyx_INCREF(__pyx_v_others); __Pyx_GIVEREF(__pyx_v_others); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_others); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3519: else:
+3520: return full_parameters
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_full_parameters);
__pyx_r = __pyx_v_full_parameters;
goto __pyx_L0;
}
3521:
+3522: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_123set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_122set_params[] = "Sets epidemiological parameters used for evaluating -log(p)\n\n Parameters\n ----------\n parameters: dict\n A dictionary containing all epidemiological parameters.\n Same keys as the one used to initialise the class.\n\n Notes\n -----\n Can use `fill_params_dict` to generate the full dictionary if only a few parameters are changed\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_123set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_122set_params(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_122set_params(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3523: """Sets epidemiological parameters used for evaluating -log(p)
3524:
3525: Parameters
3526: ----------
3527: parameters: dict
3528: A dictionary containing all epidemiological parameters.
3529: Same keys as the one used to initialise the class.
3530:
3531: Notes
3532: -----
3533: Can use `fill_params_dict` to generate the full dictionary if only a few parameters are changed
3534: """
+3535: self.set_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3536: self.beta = pyross.utils.age_dep_rates(parameters['beta'], self.M, 'beta')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_beta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_beta}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_beta}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_beta); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3536, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->beta); __Pyx_DECREF(((PyObject *)__pyx_v_self->beta)); __pyx_v_self->beta = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3537: self.gIa = pyross.utils.age_dep_rates(parameters['gIa'], self.M, 'gIa')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gIa); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gIa}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gIa}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_gIa); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3537, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gIa); __Pyx_DECREF(((PyObject *)__pyx_v_self->gIa)); __pyx_v_self->gIa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3538: self.gIs = pyross.utils.age_dep_rates(parameters['gIs'], self.M, 'gIs')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gIs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_gIs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_gIs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_gIs); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3538, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gIs); __Pyx_DECREF(((PyObject *)__pyx_v_self->gIs)); __pyx_v_self->gIs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3539: self.fsa = pyross.utils.age_dep_rates(parameters['fsa'], self.M, 'fsa')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_fsa); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_fsa}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_fsa}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_fsa); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3539, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->fsa); __Pyx_DECREF(((PyObject *)__pyx_v_self->fsa)); __pyx_v_self->fsa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3540: self.alpha = pyross.utils.age_dep_rates(parameters['alpha'], self.M, 'alpha')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_alpha); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_alpha}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_alpha}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_alpha); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3540, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->alpha); __Pyx_DECREF(((PyObject *)__pyx_v_self->alpha)); __pyx_v_self->alpha = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
3541:
+3542: def _construct_inits(self, init_guess, flags, fltrs, obs0, fltr0):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_125_construct_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_125_construct_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_init_guess = 0;
PyObject *__pyx_v_flags = 0;
PyObject *__pyx_v_fltrs = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_construct_inits (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_init_guess,&__pyx_n_s_flags,&__pyx_n_s_fltrs,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_guess)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_construct_inits", 1, 5, 5, 1); __PYX_ERR(0, 3542, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltrs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_construct_inits", 1, 5, 5, 2); __PYX_ERR(0, 3542, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_construct_inits", 1, 5, 5, 3); __PYX_ERR(0, 3542, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_construct_inits", 1, 5, 5, 4); __PYX_ERR(0, 3542, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_construct_inits") < 0)) __PYX_ERR(0, 3542, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_init_guess = values[0];
__pyx_v_flags = values[1];
__pyx_v_fltrs = values[2];
__pyx_v_obs0 = values[3];
__pyx_v_fltr0 = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_construct_inits", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3542, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._construct_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_124_construct_inits(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_init_guess, __pyx_v_flags, __pyx_v_fltrs, __pyx_v_obs0, __pyx_v_fltr0);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_124_construct_inits(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_init_guess, PyObject *__pyx_v_flags, PyObject *__pyx_v_fltrs, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0) {
PyArrayObject *__pyx_v_x0 = 0;
PyArrayObject *__pyx_v_F = 0;
Py_ssize_t __pyx_v_start;
PyObject *__pyx_v_coeff = NULL;
__Pyx_LocalBuf_ND __pyx_pybuffernd_F;
__Pyx_Buffer __pyx_pybuffer_F;
__Pyx_LocalBuf_ND __pyx_pybuffernd_x0;
__Pyx_Buffer __pyx_pybuffer_x0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_construct_inits", 0);
__pyx_pybuffer_x0.pybuffer.buf = NULL;
__pyx_pybuffer_x0.refcount = 0;
__pyx_pybuffernd_x0.data = NULL;
__pyx_pybuffernd_x0.rcbuffer = &__pyx_pybuffer_x0;
__pyx_pybuffer_F.pybuffer.buf = NULL;
__pyx_pybuffer_F.refcount = 0;
__pyx_pybuffernd_F.data = NULL;
__pyx_pybuffernd_F.rcbuffer = &__pyx_pybuffer_F;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_F.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type._construct_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_F.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__pyx_L2:;
__Pyx_XDECREF((PyObject *)__pyx_v_x0);
__Pyx_XDECREF((PyObject *)__pyx_v_F);
__Pyx_XDECREF(__pyx_v_coeff);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3543: cdef:
3544: np.ndarray [DTYPE_t, ndim=1] x0
3545: np.ndarray [DTYPE_t, ndim=2] F
+3546: Py_ssize_t start=0
__pyx_v_start = 0;
+3547: x0 = obs0
if (!(likely(((__pyx_v_obs0) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_obs0, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3547, __pyx_L1_error) __pyx_t_1 = __pyx_v_obs0; __Pyx_INCREF(__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_v_x0, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5); } __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0; } __pyx_pybuffernd_x0.diminfo[0].strides = __pyx_pybuffernd_x0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x0.diminfo[0].shape = __pyx_pybuffernd_x0.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3547, __pyx_L1_error) } __pyx_v_x0 = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3548: F = fltr0
if (!(likely(((__pyx_v_fltr0) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fltr0, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3548, __pyx_L1_error) __pyx_t_1 = __pyx_v_fltr0; __Pyx_INCREF(__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_F.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)__pyx_v_F, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3); } __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0; } __pyx_pybuffernd_F.diminfo[0].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_F.diminfo[0].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_F.diminfo[1].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_F.diminfo[1].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3548, __pyx_L1_error) } __pyx_v_F = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3549: if flags[0]: # lin mode
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_flags, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_6) { /* … */ }
+3550: coeff = init_guess[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_init_guess, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_coeff = __pyx_t_1; __pyx_t_1 = 0;
+3551: x0 = np.concatenate((x0, fltrs[0]@self._lin_mode_inits(coeff)))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_fltrs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lin_mode_inits); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_9 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_v_coeff) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_coeff); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_x0)); __Pyx_GIVEREF(((PyObject *)__pyx_v_x0)); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_x0)); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3551, __pyx_L1_error) __pyx_t_12 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_v_x0, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5); } __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0; } __pyx_pybuffernd_x0.diminfo[0].strides = __pyx_pybuffernd_x0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x0.diminfo[0].shape = __pyx_pybuffernd_x0.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3551, __pyx_L1_error) } __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v_x0, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+3552: F = np.concatenate((F, fltrs[0]), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fltrs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_F)); __Pyx_GIVEREF(((PyObject *)__pyx_v_F)); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_F)); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3552, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3552, __pyx_L1_error) __pyx_t_13 = ((PyArrayObject *)__pyx_t_10); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_F.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)__pyx_v_F, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3); } __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0; } __pyx_pybuffernd_F.diminfo[0].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_F.diminfo[0].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_F.diminfo[1].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_F.diminfo[1].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3552, __pyx_L1_error) } __pyx_t_13 = 0; __Pyx_DECREF_SET(__pyx_v_F, ((PyArrayObject *)__pyx_t_10)); __pyx_t_10 = 0;
+3553: start += 1
__pyx_v_start = (__pyx_v_start + 1);
+3554: if flags[1]: # independent guesses
__pyx_t_10 = __Pyx_GetItemInt(__pyx_v_flags, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3554, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_6) { /* … */ }
+3555: x0 = np.concatenate((x0, init_guess[start:]))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_init_guess, __pyx_v_start, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(((PyObject *)__pyx_v_x0)); __Pyx_GIVEREF(((PyObject *)__pyx_v_x0)); PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_v_x0)); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_10 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3555, __pyx_L1_error) __pyx_t_12 = ((PyArrayObject *)__pyx_t_10); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_v_x0, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5); } __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0; } __pyx_pybuffernd_x0.diminfo[0].strides = __pyx_pybuffernd_x0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x0.diminfo[0].shape = __pyx_pybuffernd_x0.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3555, __pyx_L1_error) } __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v_x0, ((PyArrayObject *)__pyx_t_10)); __pyx_t_10 = 0;
+3556: F = np.concatenate((F, fltrs[1]), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_fltrs, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(((PyObject *)__pyx_v_F)); __Pyx_GIVEREF(((PyObject *)__pyx_v_F)); PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_v_F)); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3556, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3556, __pyx_L1_error) __pyx_t_13 = ((PyArrayObject *)__pyx_t_9); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_F.rcbuffer->pybuffer); __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_2 < 0)) { PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_F.rcbuffer->pybuffer, (PyObject*)__pyx_v_F, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3); } __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0; } __pyx_pybuffernd_F.diminfo[0].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_F.diminfo[0].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_F.diminfo[1].strides = __pyx_pybuffernd_F.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_F.diminfo[1].shape = __pyx_pybuffernd_F.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3556, __pyx_L1_error) } __pyx_t_13 = 0; __Pyx_DECREF_SET(__pyx_v_F, ((PyArrayObject *)__pyx_t_9)); __pyx_t_9 = 0;
+3557: assert np.linalg.matrix_rank(F) == self.dim, 'Conflicts in initial conditions'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_linalg); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_matrix_rank); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_10)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
__pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, ((PyObject *)__pyx_v_F)) : __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_F));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3557, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_6)) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Conflicts_in_initial_conditions);
__PYX_ERR(0, 3557, __pyx_L1_error)
}
}
#endif
+3558: return np.linalg.solve(F, x0)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_linalg); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_solve); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_2 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_2 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_F), ((PyObject *)__pyx_v_x0)}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_F), ((PyObject *)__pyx_v_x0)}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_F)); __Pyx_GIVEREF(((PyObject *)__pyx_v_F)); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_2, ((PyObject *)__pyx_v_F)); __Pyx_INCREF(((PyObject *)__pyx_v_x0)); __Pyx_GIVEREF(((PyObject *)__pyx_v_x0)); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_2, ((PyObject *)__pyx_v_x0)); __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0;
3559:
+3560: def _lin_mode_inits(self, double coeff):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_127_lin_mode_inits(PyObject *__pyx_v_self, PyObject *__pyx_arg_coeff); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_127_lin_mode_inits(PyObject *__pyx_v_self, PyObject *__pyx_arg_coeff) {
double __pyx_v_coeff;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_lin_mode_inits (wrapper)", 0);
assert(__pyx_arg_coeff); {
__pyx_v_coeff = __pyx_PyFloat_AsDouble(__pyx_arg_coeff); if (unlikely((__pyx_v_coeff == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._lin_mode_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_126_lin_mode_inits(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((double)__pyx_v_coeff));
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_126_lin_mode_inits(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, double __pyx_v_coeff) {
__Pyx_memviewslice __pyx_v_v = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_lin_mode_inits", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type._lin_mode_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_v, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3561: cdef double [:] v, x0, fi=self.fi
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3561, __pyx_L1_error) __pyx_v_fi = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3562: v = self.find_fastest_growing_lin_mode(0)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->find_fastest_growing_lin_mode(__pyx_v_self, 0.0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3562, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_v = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3563: v = np.multiply(v, coeff)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_multiply); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_v, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_coeff); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3563, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_v, 1); __pyx_v_v = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3564: x0 = np.zeros((self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3565: x0[:self.M] = fi
__pyx_t_1.data = __pyx_v_x0.data;
__pyx_t_1.memview = __pyx_v_x0.memview;
__PYX_INC_MEMVIEW(&__pyx_t_1, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_1,
__pyx_v_x0.shape[0], __pyx_v_x0.strides[0], __pyx_v_x0.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
__pyx_v_self->M,
0,
0,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3565, __pyx_L1_error)
}
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_fi, __pyx_t_1, 1, 1, 0) < 0)) __PYX_ERR(0, 3565, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__pyx_t_1.memview = NULL;
__pyx_t_1.data = NULL;
+3566: return np.add(x0, v)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_add); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_v, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_4}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_4}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
3567:
+3568: cdef double _obtain_logp_for_traj(self, double [:, :] x, double Tf,
static double __pyx_f_6pyross_9inference_8SIR_type__obtain_logp_for_traj(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_Tf, struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_traj *__pyx_optional_args) {
Py_ssize_t __pyx_v_inter_steps = ((Py_ssize_t)0);
double __pyx_v_log_p;
__Pyx_memviewslice __pyx_v_xi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xf = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__xm = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_Nf;
Py_ssize_t __pyx_v_steps;
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_ti = NULL;
PyObject *__pyx_v_tf = NULL;
PyObject *__pyx_v_times = NULL;
PyObject *__pyx_v_sol = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_logp_for_traj", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_inter_steps = __pyx_optional_args->inter_steps;
}
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__PYX_XDEC_MEMVIEW(&__pyx_t_16, 1);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._obtain_logp_for_traj", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__Pyx_XDECREF(__pyx_v_ti);
__Pyx_XDECREF(__pyx_v_tf);
__Pyx_XDECREF(__pyx_v_times);
__Pyx_XDECREF(__pyx_v_sol);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_traj {
int __pyx_n;
Py_ssize_t inter_steps;
};
3569: Py_ssize_t inter_steps=0):
3570: cdef:
+3571: double log_p = 0
__pyx_v_log_p = 0.0;
3572: double [:] xi, xf, dev
3573: double [:, :] cov, xm, _xm
+3574: Py_ssize_t i, Nf=x.shape[0], steps=self.steps
__pyx_v_Nf = (__pyx_v_x.shape[0]); __pyx_t_1 = __pyx_v_self->steps; __pyx_v_steps = __pyx_t_1;
+3575: double [:] time_points = np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3575, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_time_points = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
+3576: for i in range(Nf-1):
__pyx_t_1 = (__pyx_v_Nf - 1);
__pyx_t_10 = __pyx_t_1;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+3577: xi = x[i]
__pyx_t_9.data = __pyx_v_x.data;
__pyx_t_9.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_9, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
__pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_9.shape[0] = __pyx_v_x.shape[1];
__pyx_t_9.strides[0] = __pyx_v_x.strides[1];
__pyx_t_9.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__pyx_v_xi = __pyx_t_9;
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
+3578: xf = x[i+1]
__pyx_t_9.data = __pyx_v_x.data;
__pyx_t_9.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_9, 0);
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_i + 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
__pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_9.shape[0] = __pyx_v_x.shape[1];
__pyx_t_9.strides[0] = __pyx_v_x.strides[1];
__pyx_t_9.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__pyx_v_xf = __pyx_t_9;
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
+3579: ti = time_points[i]
__pyx_t_12 = __pyx_v_i;
__pyx_t_2 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_12 * __pyx_v_time_points.strides[0]) )))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3579, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_ti, __pyx_t_2);
__pyx_t_2 = 0;
+3580: tf = time_points[i+1]
__pyx_t_12 = (__pyx_v_i + 1);
__pyx_t_2 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_12 * __pyx_v_time_points.strides[0]) )))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3580, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_tf, __pyx_t_2);
__pyx_t_2 = 0;
+3581: if inter_steps:
__pyx_t_13 = (__pyx_v_inter_steps != 0);
if (__pyx_t_13) {
/* … */
goto __pyx_L5;
}
+3582: xi = np.multiply(xi, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_multiply); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xi, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1); __pyx_v_xi = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
+3583: _xm = pyross.utils.forward_euler_integration(self._rhs0, xi,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pyross); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_xi, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* … */ __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1); __pyx_v__xm = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL;
3584: ti, tf,
+3585: steps, inter_steps)
__pyx_t_4 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_inter_steps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[7] = {__pyx_t_14, __pyx_t_6, __pyx_t_5, __pyx_v_ti, __pyx_v_tf, __pyx_t_4, __pyx_t_3}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[7] = {__pyx_t_14, __pyx_t_6, __pyx_t_5, __pyx_v_ti, __pyx_v_tf, __pyx_t_4, __pyx_t_3}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_15 = PyTuple_New(6+__pyx_t_7); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_7, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_7, __pyx_t_5); __Pyx_INCREF(__pyx_v_ti); __Pyx_GIVEREF(__pyx_v_ti); PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_7, __pyx_v_ti); __Pyx_INCREF(__pyx_v_tf); __Pyx_GIVEREF(__pyx_v_tf); PyTuple_SET_ITEM(__pyx_t_15, 3+__pyx_t_7, __pyx_v_tf); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 4+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 5+__pyx_t_7, __pyx_t_3); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3586: _xm = np.divide(_xm, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_divide); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v__xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_3}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_3}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_t_3); __pyx_t_8 = 0; __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3586, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1); __pyx_v__xm = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL;
+3587: self._xm = np.copy(_xm)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __pyx_memoryview_fromslice(__pyx_v__xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_15) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_15); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3587, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_xm); __Pyx_DECREF(((PyObject *)__pyx_v_self->_xm)); __pyx_v_self->_xm = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3588: self._interp = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->_interp); __Pyx_DECREF(__pyx_v_self->_interp); __pyx_v_self->_interp = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+3589: times = np.linspace(ti, tf, inter_steps*steps)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_linspace); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_inter_steps * __pyx_v_steps)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_ti, __pyx_v_tf, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_ti, __pyx_v_tf, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_ti); __Pyx_GIVEREF(__pyx_v_ti); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_ti); __Pyx_INCREF(__pyx_v_tf); __Pyx_GIVEREF(__pyx_v_tf); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_tf); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF_SET(__pyx_v_times, __pyx_t_2); __pyx_t_2 = 0;
+3590: for i in range(_xm.shape[1]):
__pyx_t_17 = (__pyx_v__xm.shape[1]);
__pyx_t_18 = __pyx_t_17;
for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
__pyx_v_i = __pyx_t_19;
+3591: self._interp.append(interpolate.interp1d(times, _xm[:,i],
if (unlikely(__pyx_v_self->_interp == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
__PYX_ERR(0, 3591, __pyx_L1_error)
}
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_interpolate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_interp1d); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_9.data = __pyx_v__xm.data;
__pyx_t_9.memview = __pyx_v__xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_9, 0);
__pyx_t_9.shape[0] = __pyx_v__xm.shape[0];
__pyx_t_9.strides[0] = __pyx_v__xm.strides[0];
__pyx_t_9.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v__xm.strides[1];
__pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_9, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_v_times);
__Pyx_GIVEREF(__pyx_v_times);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_times);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);
__pyx_t_2 = 0;
/* … */
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_20 = __Pyx_PyList_Append(__pyx_v_self->_interp, __pyx_t_5); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 3591, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
+3592: kind='linear'))
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_kind, __pyx_n_u_linear) < 0) __PYX_ERR(0, 3592, __pyx_L1_error)
+3593: xm = _xm[::inter_steps]
__pyx_t_16.data = __pyx_v__xm.data;
__pyx_t_16.memview = __pyx_v__xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_16, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_16,
__pyx_v__xm.shape[0], __pyx_v__xm.strides[0], __pyx_v__xm.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
0,
__pyx_v_inter_steps,
0,
0,
1,
1) < 0))
{
__PYX_ERR(0, 3593, __pyx_L1_error)
}
__pyx_t_16.shape[1] = __pyx_v__xm.shape[1];
__pyx_t_16.strides[1] = __pyx_v__xm.strides[1];
__pyx_t_16.suboffsets[1] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_16;
__pyx_t_16.memview = NULL;
__pyx_t_16.data = NULL;
+3594: sol = self.interpolate_euler
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_interpolate_euler); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_sol, __pyx_t_5); __pyx_t_5 = 0;
3595: else:
+3596: xm, sol = self.integrate(xi, ti, tf, steps, dense_output=True)
/*else*/ {
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_xi, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_2);
__Pyx_INCREF(__pyx_v_ti);
__Pyx_GIVEREF(__pyx_v_ti);
PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_ti);
__Pyx_INCREF(__pyx_v_tf);
__Pyx_GIVEREF(__pyx_v_tf);
PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_tf);
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_8);
__pyx_t_2 = 0;
__pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dense_output, Py_True) < 0) __PYX_ERR(0, 3596, __pyx_L1_error)
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3596, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_15 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_8 = PyList_GET_ITEM(sequence, 0);
__pyx_t_15 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_15);
#else
__pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_15 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_21 = Py_TYPE(__pyx_t_5)->tp_iternext;
index = 0; __pyx_t_8 = __pyx_t_21(__pyx_t_5); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
index = 1; __pyx_t_15 = __pyx_t_21(__pyx_t_5); if (unlikely(!__pyx_t_15)) goto __pyx_L8_unpacking_failed;
__Pyx_GOTREF(__pyx_t_15);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_5), 2) < 0) __PYX_ERR(0, 3596, __pyx_L1_error)
__pyx_t_21 = NULL;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L9_unpacking_done;
__pyx_L8_unpacking_failed:;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_21 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3596, __pyx_L1_error)
__pyx_L9_unpacking_done:;
}
__pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3596, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_16;
__pyx_t_16.memview = NULL;
__pyx_t_16.data = NULL;
__Pyx_XDECREF_SET(__pyx_v_sol, __pyx_t_15);
__pyx_t_15 = 0;
}
__pyx_L5:;
+3597: self.integrator_step_count = 0
__pyx_v_self->integrator_step_count = 0;
+3598: cov = self._estimate_cond_cov(sol, ti, tf)
__pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_v_ti); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3598, __pyx_L1_error) __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_v_tf); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3598, __pyx_L1_error) __pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_estimate_cond_cov(__pyx_v_self, __pyx_v_sol, __pyx_t_22, __pyx_t_23); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3598, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL;
+3599: dev = np.subtract(xf, xm[steps-1])
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_subtract); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __pyx_memoryview_fromslice(__pyx_v_xf, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_9.data = __pyx_v_xm.data; __pyx_t_9.memview = __pyx_v_xm.memview; __PYX_INC_MEMVIEW(&__pyx_t_9, 0); { Py_ssize_t __pyx_tmp_idx = (__pyx_v_steps - 1); Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0]; __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_9.shape[0] = __pyx_v_xm.shape[1]; __pyx_t_9.strides[0] = __pyx_v_xm.strides[1]; __pyx_t_9.suboffsets[0] = -1; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_9, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_15, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_15, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_5); __pyx_t_15 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1); __pyx_v_dev = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
+3600: log_p += self._log_cond_p(dev, cov)
__pyx_v_log_p = (__pyx_v_log_p + ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_log_cond_p(__pyx_v_self, __pyx_v_dev, __pyx_v_cov)); }
+3601: return -log_p
__pyx_r = (-__pyx_v_log_p); goto __pyx_L0;
3602:
+3603: cdef double _obtain_logp_for_lat_traj(self, double [:] x0, double [:] obs_flattened, np.ndarray fltr,
static double __pyx_f_6pyross_9inference_8SIR_type__obtain_logp_for_lat_traj(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_obs_flattened, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_lat_traj *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_18);
__PYX_XDEC_MEMVIEW(&__pyx_t_20, 1);
__Pyx_XDECREF(__pyx_t_21);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_WriteUnraisable("pyross.inference.SIR_type._obtain_logp_for_lat_traj", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xm_red, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_cov_red);
__Pyx_XDECREF((PyObject *)__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_cov_red_inv_dev);
__Pyx_XDECREF(__pyx_v_ldet);
__Pyx_XDECREF(__pyx_v_log_p);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type__obtain_logp_for_lat_traj {
int __pyx_n;
PyObject *tangent;
Py_ssize_t inter_steps;
};
+3604: double Tf, tangent=False,
PyObject *__pyx_v_tangent = ((PyObject *)Py_False);
Py_ssize_t __pyx_v_inter_steps = ((Py_ssize_t)0);
Py_ssize_t __pyx_v_reduced_dim;
Py_ssize_t __pyx_v_Nf;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xm_red = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_cov_red = 0;
PyArrayObject *__pyx_v_full_cov = 0;
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_cov_red_inv_dev = NULL;
PyObject *__pyx_v_ldet = NULL;
PyObject *__pyx_v_log_p = NULL;
__Pyx_LocalBuf_ND __pyx_pybuffernd_cov_red;
__Pyx_Buffer __pyx_pybuffer_cov_red;
__Pyx_LocalBuf_ND __pyx_pybuffernd_full_cov;
__Pyx_Buffer __pyx_pybuffer_full_cov;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_logp_for_lat_traj", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_tangent = __pyx_optional_args->tangent;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_inter_steps = __pyx_optional_args->inter_steps;
}
}
}
__pyx_pybuffer_cov_red.pybuffer.buf = NULL;
__pyx_pybuffer_cov_red.refcount = 0;
__pyx_pybuffernd_cov_red.data = NULL;
__pyx_pybuffernd_cov_red.rcbuffer = &__pyx_pybuffer_cov_red;
__pyx_pybuffer_full_cov.pybuffer.buf = NULL;
__pyx_pybuffer_full_cov.refcount = 0;
__pyx_pybuffernd_full_cov.data = NULL;
__pyx_pybuffernd_full_cov.rcbuffer = &__pyx_pybuffer_full_cov;
3605: Py_ssize_t inter_steps=0):
3606: cdef:
+3607: Py_ssize_t reduced_dim=obs_flattened.shape[0], Nf=fltr.shape[0]+1
__pyx_v_reduced_dim = (__pyx_v_obs_flattened.shape[0]); __pyx_v_Nf = ((__pyx_v_fltr->dimensions[0]) + 1);
3608: double [:, :] xm
3609: double [:] xm_red, dev
3610: np.ndarray[DTYPE_t, ndim=2] cov_red, full_cov
+3611: if tangent:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3611, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+3612: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf, inter_steps=inter_steps)
__pyx_t_3.__pyx_n = 1;
__pyx_t_3.inter_steps = __pyx_v_inter_steps;
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3612, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_4 = PyList_GET_ITEM(sequence, 0);
__pyx_t_5 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
__pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3612, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5_unpacking_done;
__pyx_L4_unpacking_failed:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3612, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3612, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3612, __pyx_L1_error)
__pyx_v_xm = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
__pyx_t_9 = ((PyArrayObject *)__pyx_t_5);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
if (unlikely(__pyx_t_10 < 0)) {
PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_v_full_cov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
}
__pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0;
}
__pyx_pybuffernd_full_cov.diminfo[0].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_full_cov.diminfo[0].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_full_cov.diminfo[1].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_full_cov.diminfo[1].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[1];
if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3612, __pyx_L1_error)
}
__pyx_t_9 = 0;
__pyx_v_full_cov = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
3613: else:
+3614: try:
/*else*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
/* … */
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
goto __pyx_L1_error;
__pyx_L9_except_return:;
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
goto __pyx_L0;
__pyx_L11_try_end:;
}
}
__pyx_L3:;
+3615: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, inter_steps=inter_steps)
__pyx_t_14.__pyx_n = 1;
__pyx_t_14.inter_steps = __pyx_v_inter_steps;
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3615, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3615, __pyx_L6_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_5 = PyList_GET_ITEM(sequence, 0);
__pyx_t_4 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
#else
__pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3615, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3615, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3615, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L12_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3615, __pyx_L6_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L13_unpacking_done;
__pyx_L12_unpacking_failed:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3615, __pyx_L6_error)
__pyx_L13_unpacking_done:;
}
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3615, __pyx_L6_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3615, __pyx_L6_error)
__pyx_v_xm = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
__pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
if (unlikely(__pyx_t_10 < 0)) {
PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_v_full_cov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
}
__pyx_t_15 = __pyx_t_16 = __pyx_t_17 = 0;
}
__pyx_pybuffernd_full_cov.diminfo[0].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_full_cov.diminfo[0].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_full_cov.diminfo[1].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_full_cov.diminfo[1].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[1];
if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3615, __pyx_L6_error)
}
__pyx_t_9 = 0;
__pyx_v_full_cov = ((PyArrayObject *)__pyx_t_4);
__pyx_t_4 = 0;
+3616: except MaxIntegratorStepsException:
__Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_MaxIntegratorStepsException); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3616, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_ErrRestore(__pyx_t_2, __pyx_t_4, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; if (__pyx_t_10) { __Pyx_AddTraceback("pyross.inference.SIR_type._obtain_logp_for_lat_traj", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 3616, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_2);
+3617: return np.Inf
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3617, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Inf); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3617, __pyx_L8_except_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_19 = __pyx_PyFloat_AsDouble(__pyx_t_18); if (unlikely((__pyx_t_19 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3617, __pyx_L8_except_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_r = __pyx_t_19; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_except_return; } goto __pyx_L8_except_error; __pyx_L8_except_error:;
+3618: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sparse); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_fltr)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_full_fltr = __pyx_t_2; __pyx_t_2 = 0;
+3619: cov_red = full_fltr@full_cov@np.transpose(full_fltr)
__pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, ((PyObject *)__pyx_v_full_cov)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_transpose); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_18); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_18, function); } } __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_18, __pyx_t_4, __pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_v_full_fltr); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3619, __pyx_L1_error) __pyx_t_9 = ((PyArrayObject *)__pyx_t_18); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer); __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_10 < 0)) { PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer, (PyObject*)__pyx_v_cov_red, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13); } __pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0; } __pyx_pybuffernd_cov_red.diminfo[0].strides = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cov_red.diminfo[0].shape = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cov_red.diminfo[1].strides = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cov_red.diminfo[1].shape = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3619, __pyx_L1_error) } __pyx_t_9 = 0; __pyx_v_cov_red = ((PyArrayObject *)__pyx_t_18); __pyx_t_18 = 0;
+3620: xm_red = full_fltr@(np.ravel(xm))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_18 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_18); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_20 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_20.memview)) __PYX_ERR(0, 3620, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_xm_red = __pyx_t_20; __pyx_t_20.memview = NULL; __pyx_t_20.data = NULL;
+3621: dev=np.subtract(obs_flattened, xm_red)
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_np); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_subtract); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = __pyx_memoryview_fromslice(__pyx_v_obs_flattened, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xm_red, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_18, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_18, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_21 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_10, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_10, __pyx_t_4); __pyx_t_18 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_20 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_20.memview)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dev = __pyx_t_20; __pyx_t_20.memview = NULL; __pyx_t_20.data = NULL;
+3622: cov_red_inv_dev, ldet = pyross.utils.solve_symmetric_close_to_singular(cov_red, dev)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_solve_symmetric_close_to_singula); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_21 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_4 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_cov_red), __pyx_t_21}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_cov_red), __pyx_t_21}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; } else #endif { __pyx_t_18 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_cov_red)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cov_red)); PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_10, ((PyObject *)__pyx_v_cov_red)); __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_10, __pyx_t_21); __pyx_t_21 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3622, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_18 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_18 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_18); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_18 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_21 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_21)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_21); if (unlikely(!__pyx_t_5)) goto __pyx_L16_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_18 = __pyx_t_7(__pyx_t_21); if (unlikely(!__pyx_t_18)) goto __pyx_L16_unpacking_failed; __Pyx_GOTREF(__pyx_t_18); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_21), 2) < 0) __PYX_ERR(0, 3622, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; goto __pyx_L17_unpacking_done; __pyx_L16_unpacking_failed:; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3622, __pyx_L1_error) __pyx_L17_unpacking_done:; } __pyx_v_cov_red_inv_dev = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_ldet = __pyx_t_18; __pyx_t_18 = 0;
+3623: log_p = -np.dot(dev, cov_red_inv_dev)*(self.Omega/2.)
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_np); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_dot); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_21 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_21)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_21); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_21, __pyx_t_18, __pyx_v_cov_red_inv_dev}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_21, __pyx_t_18, __pyx_v_cov_red_inv_dev}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_21) { __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_21); __pyx_t_21 = NULL; } __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_t_18); __Pyx_INCREF(__pyx_v_cov_red_inv_dev); __Pyx_GIVEREF(__pyx_v_cov_red_inv_dev); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_v_cov_red_inv_dev); __pyx_t_18 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->Omega / 2.)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_p = __pyx_t_4; __pyx_t_4 = 0;
+3624: log_p -= (ldet-reduced_dim*log(self.Omega))/2. + (reduced_dim/2.)*log(2.*PI)
__pyx_t_4 = PyFloat_FromDouble((__pyx_v_reduced_dim * log(__pyx_v_self->Omega))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyNumber_Subtract(__pyx_v_ldet, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_2, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((((double)__pyx_v_reduced_dim) / 2.) * log((2. * __pyx_v_6pyross_9inference_PI)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_v_log_p, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_log_p, __pyx_t_2); __pyx_t_2 = 0;
+3625: log_p -= reduced_dim*np.log(self.Omega)
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_log); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_21 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) { __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_18); if (likely(__pyx_t_21)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18); __Pyx_INCREF(__pyx_t_21); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_18, function); } } __pyx_t_5 = (__pyx_t_21) ? __Pyx_PyObject_Call2Args(__pyx_t_18, __pyx_t_21, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_4); __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_v_log_p, __pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF_SET(__pyx_v_log_p, __pyx_t_5); __pyx_t_5 = 0;
+3626: return -log_p
__pyx_t_5 = PyNumber_Negative(__pyx_v_log_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_19 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_19 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3626, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_19; goto __pyx_L0;
3627:
3628:
+3629: cdef double _obtain_square_dev_for_lat_traj(self, double [:] x0, double [:] obs_flattened, np.ndarray fltr,
static double __pyx_f_6pyross_9inference_8SIR_type__obtain_square_dev_for_lat_traj(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_obs_flattened, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf) {
CYTHON_UNUSED Py_ssize_t __pyx_v_reduced_dim;
Py_ssize_t __pyx_v_Nf;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xm_red = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_sqdev = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_square_dev_for_lat_traj", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._obtain_square_dev_for_lat_traj", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xm_red, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_sqdev);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3630: double Tf):
3631: cdef:
+3632: Py_ssize_t reduced_dim=obs_flattened.shape[0], Nf=fltr.shape[0]+1
__pyx_v_reduced_dim = (__pyx_v_obs_flattened.shape[0]); __pyx_v_Nf = ((__pyx_v_fltr->dimensions[0]) + 1);
3633: double [:, :] xm
3634: double [:] xm_red, dev
3635:
+3636: xm = self.integrate(x0, 0, Tf, Nf, dense_output=False,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dense_output, Py_False) < 0) __PYX_ERR(0, 3636, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xm = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3637: max_step=self.steps*Nf)
__pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_max_step, __pyx_t_3) < 0) __PYX_ERR(0, 3636, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3638: xm = xm[1:]
__pyx_t_6.data = __pyx_v_xm.data;
__pyx_t_6.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0],
0,
0,
&__pyx_t_7,
1,
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 3638, __pyx_L1_error)
}
__pyx_t_6.shape[1] = __pyx_v_xm.shape[1];
__pyx_t_6.strides[1] = __pyx_v_xm.strides[1];
__pyx_t_6.suboffsets[1] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+3639: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sparse); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_fltr)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_full_fltr = __pyx_t_3; __pyx_t_3 = 0;
+3640: xm_red = full_fltr@(np.ravel(xm))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3640, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_xm_red = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+3641: dev=np.subtract(obs_flattened, xm_red)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_subtract); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_obs_flattened, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_xm_red, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_t_1); __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3641, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_dev = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+3642: sqdev = np.sum(np.square(dev))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_square); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_sqdev = __pyx_t_4; __pyx_t_4 = 0;
+3643: return sqdev
__pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_sqdev); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3643, __pyx_L1_error) __pyx_r = __pyx_t_10; goto __pyx_L0;
3644:
+3645: cdef double _obtain_square_dev_for_lat_traj_diff(self, double [:] x0, double [:] obs_flattened, np.ndarray fltr,
static double __pyx_f_6pyross_9inference_8SIR_type__obtain_square_dev_for_lat_traj_diff(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_obs_flattened, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf) {
Py_ssize_t __pyx_v_reduced_dim;
Py_ssize_t __pyx_v_Nf;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xm_red = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_sqdev = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_square_dev_for_lat_traj_diff", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._obtain_square_dev_for_lat_traj_diff", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xm_red, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_sqdev);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3646: double Tf):
3647: cdef:
+3648: Py_ssize_t reduced_dim=obs_flattened.shape[0], Nf=fltr.shape[0]+1
__pyx_v_reduced_dim = (__pyx_v_obs_flattened.shape[0]); __pyx_v_Nf = ((__pyx_v_fltr->dimensions[0]) + 1);
3649: double [:, :] xm
3650: double [:] xm_red, dev
3651:
+3652: xm = self.integrate(x0, 0, Tf, Nf, dense_output=False,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dense_output, Py_False) < 0) __PYX_ERR(0, 3652, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xm = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3653: max_step=self.steps*Nf)
__pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_max_step, __pyx_t_3) < 0) __PYX_ERR(0, 3652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3654: xm = np.diff(xm,axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_diff); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3654, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3654, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3655: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sparse); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_v_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_fltr)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_full_fltr = __pyx_t_1; __pyx_t_1 = 0;
+3656: xm_red = full_fltr@(np.ravel(xm))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3656, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xm_red = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+3657: dev=np.subtract(obs_flattened, xm_red)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_subtract); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_obs_flattened, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xm_red, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_1, __pyx_t_4}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_1, __pyx_t_4}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3657, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_dev = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
3658: # sqdev = np.sum(np.square(dev)/(xm_red+np.ones(reduced_dim)))
+3659: sqdev = np.sum(np.square(dev)/(np.abs(xm_red)+np.ones(reduced_dim)))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_square); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_abs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xm_red, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_10, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ones); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_2 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_3 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_sqdev = __pyx_t_3; __pyx_t_3 = 0;
+3660: return sqdev
__pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_sqdev); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3660, __pyx_L1_error) __pyx_r = __pyx_t_12; goto __pyx_L0;
3661:
+3662: def _mean_cov_for_lat_endpoint(self, double [:] x0, double [:] obs_flattened, np.ndarray fltr,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_129_mean_cov_for_lat_endpoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_129_mean_cov_for_lat_endpoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_obs_flattened = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_tangent = 0;
Py_ssize_t __pyx_v_inter_steps;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean_cov_for_lat_endpoint (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_obs_flattened,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,0};
PyObject* values[6] = {0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_128_mean_cov_for_lat_endpoint(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_obs_flattened, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_tangent, Py_ssize_t __pyx_v_inter_steps) {
Py_ssize_t __pyx_v_Nf;
Py_ssize_t __pyx_v_reduced_dim;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_full_cov = NULL;
PyObject *__pyx_v_last_fltr = NULL;
PyObject *__pyx_v_last_obs = NULL;
PyObject *__pyx_v_null_space = NULL;
PyObject *__pyx_v_known_space = NULL;
PyObject *__pyx_v_last_full_fltr = NULL;
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_cov_red = NULL;
PyObject *__pyx_v_xm_red = NULL;
PyObject *__pyx_v_xm_known = NULL;
PyObject *__pyx_v_dev = NULL;
PyObject *__pyx_v_invcov = NULL;
PyObject *__pyx_v_cov_last_red = NULL;
PyObject *__pyx_v_xm_last_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean_cov_for_lat_endpoint", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SIR_type._mean_cov_for_lat_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_last_fltr);
__Pyx_XDECREF(__pyx_v_last_obs);
__Pyx_XDECREF(__pyx_v_null_space);
__Pyx_XDECREF(__pyx_v_known_space);
__Pyx_XDECREF(__pyx_v_last_full_fltr);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XDECREF(__pyx_v_xm_red);
__Pyx_XDECREF(__pyx_v_xm_known);
__Pyx_XDECREF(__pyx_v_dev);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_cov_last_red);
__Pyx_XDECREF(__pyx_v_xm_last_red);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_obs_flattened, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3663: double Tf, tangent=False, Py_ssize_t inter_steps=0):
values[4] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs_flattened)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_endpoint", 0, 4, 6, 1); __PYX_ERR(0, 3662, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_endpoint", 0, 4, 6, 2); __PYX_ERR(0, 3662, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_endpoint", 0, 4, 6, 3); __PYX_ERR(0, 3662, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[5] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mean_cov_for_lat_endpoint") < 0)) __PYX_ERR(0, 3662, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3662, __pyx_L3_error)
__pyx_v_obs_flattened = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_obs_flattened.memview)) __PYX_ERR(0, 3662, __pyx_L3_error)
__pyx_v_fltr = ((PyArrayObject *)values[2]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3663, __pyx_L3_error)
__pyx_v_tangent = values[4];
if (values[5]) {
__pyx_v_inter_steps = __Pyx_PyIndex_AsSsize_t(values[5]); if (unlikely((__pyx_v_inter_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3663, __pyx_L3_error)
} else {
__pyx_v_inter_steps = ((Py_ssize_t)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_endpoint", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3662, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._mean_cov_for_lat_endpoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 3662, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_128_mean_cov_for_lat_endpoint(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_obs_flattened, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_tangent, __pyx_v_inter_steps);
3664: cdef:
+3665: Py_ssize_t Nf=fltr.shape[0]+1, reduced_dim=obs_flattened.shape[0]
__pyx_v_Nf = ((__pyx_v_fltr->dimensions[0]) + 1); __pyx_v_reduced_dim = (__pyx_v_obs_flattened.shape[0]);
+3666: if tangent:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3666, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+3667: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf, inter_steps=inter_steps)
__pyx_t_3.__pyx_n = 1;
__pyx_t_3.inter_steps = __pyx_v_inter_steps;
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3667, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_4 = PyList_GET_ITEM(sequence, 0);
__pyx_t_5 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
__pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3667, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5_unpacking_done;
__pyx_L4_unpacking_failed:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3667, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__pyx_v_xm = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_v_full_cov = __pyx_t_5;
__pyx_t_5 = 0;
3668: else:
+3669: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, inter_steps=inter_steps)
/*else*/ {
__pyx_t_8.__pyx_n = 1;
__pyx_t_8.inter_steps = __pyx_v_inter_steps;
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3669, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_5 = PyList_GET_ITEM(sequence, 0);
__pyx_t_4 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
#else
__pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3669, __pyx_L1_error)
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L7_unpacking_done;
__pyx_L6_unpacking_failed:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3669, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_v_xm = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_full_cov = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_L3:;
+3670: last_fltr = fltr[Nf-2]
__pyx_t_9 = (__pyx_v_Nf - 2); __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), __pyx_t_9, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_last_fltr = __pyx_t_2; __pyx_t_2 = 0;
+3671: last_obs = obs_flattened[reduced_dim-last_fltr.shape[0]:]
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_last_fltr, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Subtract(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10.data = __pyx_v_obs_flattened.data; __pyx_t_10.memview = __pyx_v_obs_flattened.memview; __PYX_INC_MEMVIEW(&__pyx_t_10, 0); __pyx_t_11 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_10, __pyx_v_obs_flattened.shape[0], __pyx_v_obs_flattened.strides[0], __pyx_v_obs_flattened.suboffsets[0], 0, 0, &__pyx_t_11, __pyx_t_9, 0, 0, 1, 0, 0, 1) < 0)) { __PYX_ERR(0, 3671, __pyx_L1_error) } __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_10, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __pyx_v_last_obs = __pyx_t_4; __pyx_t_4 = 0;
+3672: null_space, known_space = self._split_spaces(last_fltr, last_obs)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_split_spaces); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_last_fltr, __pyx_v_last_obs}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_last_fltr, __pyx_v_last_obs}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_last_fltr); __Pyx_GIVEREF(__pyx_v_last_fltr); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_11, __pyx_v_last_fltr); __Pyx_INCREF(__pyx_v_last_obs); __Pyx_GIVEREF(__pyx_v_last_obs); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_11, __pyx_v_last_obs); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3672, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) __PYX_ERR(0, 3672, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3672, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_v_null_space = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_known_space = __pyx_t_6; __pyx_t_6 = 0;
3673:
+3674: last_full_fltr = np.vstack((fltr[Nf-2], null_space))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_vstack); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = (__pyx_v_Nf - 2); __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), __pyx_t_9, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __Pyx_INCREF(__pyx_v_null_space); __Pyx_GIVEREF(__pyx_v_null_space); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_null_space); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_last_full_fltr = __pyx_t_4; __pyx_t_4 = 0;
+3675: full_fltr = sparse.block_diag([*fltr[:Nf-2], last_full_fltr])
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sparse); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 0, (__pyx_v_Nf - 2), NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__Pyx_ListComp_Append(__pyx_t_5, __pyx_v_last_full_fltr) < 0) __PYX_ERR(0, 3675, __pyx_L1_error) __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_full_fltr = __pyx_t_4; __pyx_t_4 = 0;
+3676: cov_red = full_fltr@full_cov@(full_fltr.T)
__pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_v_full_cov); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_fltr, __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cov_red = __pyx_t_5; __pyx_t_5 = 0;
+3677: xm_red = full_fltr@np.ravel(xm)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_v_xm) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_xm); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_xm_red = __pyx_t_4; __pyx_t_4 = 0;
3678:
+3679: xm_known = xm_red[:reduced_dim]
__pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_xm_red, 0, __pyx_v_reduced_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_xm_known = __pyx_t_4; __pyx_t_4 = 0;
+3680: dev=np.subtract(obs_flattened, xm_known)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_subtract); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_obs_flattened, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_5, __pyx_v_xm_known}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_5, __pyx_v_xm_known}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_t_5); __Pyx_INCREF(__pyx_v_xm_known); __Pyx_GIVEREF(__pyx_v_xm_known); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_xm_known); __pyx_t_5 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dev = __pyx_t_4; __pyx_t_4 = 0;
+3681: invcov = np.linalg.inv(cov_red)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linalg); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_inv); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_v_cov_red) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cov_red); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_invcov = __pyx_t_4; __pyx_t_4 = 0;
+3682: cov_last_red = np.linalg.inv(invcov[reduced_dim:, reduced_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linalg); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_inv); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_5 = PySlice_New(__pyx_t_12, Py_None, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = PySlice_New(__pyx_t_12, Py_None, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_invcov, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cov_last_red = __pyx_t_4; __pyx_t_4 = 0;
+3683: xm_last_red = xm_red[reduced_dim:] - cov_last_red@invcov[reduced_dim:, :reduced_dim]@dev
__pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_xm_red, __pyx_v_reduced_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_t_2, Py_None, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_reduced_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = PySlice_New(Py_None, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_12); __pyx_t_6 = 0; __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_invcov, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_cov_last_red, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_v_dev); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_xm_last_red = __pyx_t_2; __pyx_t_2 = 0;
+3684: return xm_last_red, cov_last_red/self.Omega, null_space, known_space
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyNumber_Divide(__pyx_v_cov_last_red, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_xm_last_red); __Pyx_GIVEREF(__pyx_v_xm_last_red); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_xm_last_red); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_12); __Pyx_INCREF(__pyx_v_null_space); __Pyx_GIVEREF(__pyx_v_null_space); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_null_space); __Pyx_INCREF(__pyx_v_known_space); __Pyx_GIVEREF(__pyx_v_known_space); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_known_space); __pyx_t_12 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
3685:
+3686: def _mean_cov_for_lat_traj(self, double [:] x0, np.ndarray obs, np.ndarray fltr,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_131_mean_cov_for_lat_traj(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_131_mean_cov_for_lat_traj(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
PyObject *__pyx_v_tangent = 0;
Py_ssize_t __pyx_v_inter_steps;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean_cov_for_lat_traj (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_tangent,&__pyx_n_s_inter_steps,0};
PyObject* values[6] = {0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_130_mean_cov_for_lat_traj(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, PyObject *__pyx_v_tangent, Py_ssize_t __pyx_v_inter_steps) {
Py_ssize_t __pyx_v_Nf;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_full_cov = NULL;
PyObject *__pyx_v_known_spaces = NULL;
PyObject *__pyx_v_null_spaces = NULL;
PyObject *__pyx_v_full_fltrs = NULL;
PyObject *__pyx_v_null_space = NULL;
PyObject *__pyx_v_full_fltr_mat = NULL;
PyObject *__pyx_v_full_null_space = NULL;
PyObject *__pyx_v_full_cov11 = NULL;
PyObject *__pyx_v_full_cov12 = NULL;
PyObject *__pyx_v_full_cov22 = NULL;
PyObject *__pyx_v_xm_known = NULL;
PyObject *__pyx_v_xm_null = NULL;
PyObject *__pyx_v_obs_flattened = NULL;
PyObject *__pyx_v_dev = NULL;
PyObject *__pyx_v_tmp = NULL;
PyObject *__pyx_v_cov_red = NULL;
PyObject *__pyx_v_xm_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean_cov_for_lat_traj", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type._mean_cov_for_lat_traj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_known_spaces);
__Pyx_XDECREF(__pyx_v_null_spaces);
__Pyx_XDECREF(__pyx_v_full_fltrs);
__Pyx_XDECREF(__pyx_v_null_space);
__Pyx_XDECREF(__pyx_v_full_fltr_mat);
__Pyx_XDECREF(__pyx_v_full_null_space);
__Pyx_XDECREF(__pyx_v_full_cov11);
__Pyx_XDECREF(__pyx_v_full_cov12);
__Pyx_XDECREF(__pyx_v_full_cov22);
__Pyx_XDECREF(__pyx_v_xm_known);
__Pyx_XDECREF(__pyx_v_xm_null);
__Pyx_XDECREF(__pyx_v_obs_flattened);
__Pyx_XDECREF(__pyx_v_dev);
__Pyx_XDECREF(__pyx_v_tmp);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XDECREF(__pyx_v_xm_red);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3687: double Tf, tangent=False, Py_ssize_t inter_steps=0):
values[4] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_traj", 0, 4, 6, 1); __PYX_ERR(0, 3686, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_traj", 0, 4, 6, 2); __PYX_ERR(0, 3686, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_traj", 0, 4, 6, 3); __PYX_ERR(0, 3686, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[5] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_mean_cov_for_lat_traj") < 0)) __PYX_ERR(0, 3686, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3686, __pyx_L3_error)
__pyx_v_obs = ((PyArrayObject *)values[1]);
__pyx_v_fltr = ((PyArrayObject *)values[2]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3687, __pyx_L3_error)
__pyx_v_tangent = values[4];
if (values[5]) {
__pyx_v_inter_steps = __Pyx_PyIndex_AsSsize_t(values[5]); if (unlikely((__pyx_v_inter_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3687, __pyx_L3_error)
} else {
__pyx_v_inter_steps = ((Py_ssize_t)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_mean_cov_for_lat_traj", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3686, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._mean_cov_for_lat_traj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 3686, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 3686, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_130_mean_cov_for_lat_traj(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_tangent, __pyx_v_inter_steps);
3688: cdef:
+3689: Py_ssize_t Nf=fltr.shape[0]+1, i, dim=self.dim
__pyx_v_Nf = ((__pyx_v_fltr->dimensions[0]) + 1); __pyx_t_1 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_1;
+3690: if tangent:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3690, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+3691: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf, inter_steps=inter_steps)
__pyx_t_4.__pyx_n = 1;
__pyx_t_4.inter_steps = __pyx_v_inter_steps;
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3691, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
PyObject* sequence = __pyx_t_3;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3691, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_5 = PyList_GET_ITEM(sequence, 0);
__pyx_t_6 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
#else
__pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3691, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3691, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3691, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3691, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L5_unpacking_done;
__pyx_L4_unpacking_failed:;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3691, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__pyx_v_xm = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_full_cov = __pyx_t_6;
__pyx_t_6 = 0;
3692: else:
+3693: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, inter_steps=inter_steps)
/*else*/ {
__pyx_t_9.__pyx_n = 1;
__pyx_t_9.inter_steps = __pyx_v_inter_steps;
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 0, &__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
PyObject* sequence = __pyx_t_3;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3693, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_6 = PyList_GET_ITEM(sequence, 0);
__pyx_t_5 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_5);
#else
__pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
index = 0; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3693, __pyx_L1_error)
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L7_unpacking_done;
__pyx_L6_unpacking_failed:;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3693, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_v_xm = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_v_full_cov = __pyx_t_5;
__pyx_t_5 = 0;
}
__pyx_L3:;
+3694: known_spaces = np.empty((Nf-1, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_known_spaces = __pyx_t_3; __pyx_t_3 = 0;
+3695: null_spaces = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_null_spaces = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+3696: full_fltrs = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_full_fltrs = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
3697:
+3698: for i in range(Nf-1):
__pyx_t_1 = (__pyx_v_Nf - 1);
__pyx_t_10 = __pyx_t_1;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+3699: null_space, known_spaces[i] = self._split_spaces(fltr[i], obs[i])
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_split_spaces); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_obs), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_12 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_5}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_5}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_14 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_13, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_13, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3699, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_14 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_14); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_14 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_14)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_14); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_5), 2) < 0) __PYX_ERR(0, 3699, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3699, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_null_space, __pyx_t_7); __pyx_t_7 = 0; if (unlikely(__Pyx_SetItemInt(__pyx_v_known_spaces, __pyx_v_i, __pyx_t_14, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 3699, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+3700: null_spaces.append(null_space)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_null_spaces, __pyx_v_null_space); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 3700, __pyx_L1_error)
+3701: full_fltrs.append(fltr[i])
__pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_full_fltrs, __pyx_t_3); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 3701, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
3702:
+3703: full_fltr_mat = sparse.block_diag(full_fltrs)
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_sparse); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_v_full_fltrs) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_full_fltrs); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_full_fltr_mat = __pyx_t_3; __pyx_t_3 = 0;
+3704: full_null_space = sparse.block_diag(null_spaces)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sparse); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_7, __pyx_v_null_spaces) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_null_spaces); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_full_null_space = __pyx_t_3; __pyx_t_3 = 0;
3705:
+3706: full_cov11 = full_null_space@full_cov@(full_null_space.T)
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_null_space, __pyx_v_full_cov); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_null_space, __pyx_n_s_T); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_full_cov11 = __pyx_t_7; __pyx_t_7 = 0;
+3707: full_cov12 = full_null_space@full_cov@(full_fltr_mat.T)
__pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_null_space, __pyx_v_full_cov); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_fltr_mat, __pyx_n_s_T); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_7, __pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_full_cov12 = __pyx_t_3; __pyx_t_3 = 0;
+3708: full_cov22 = full_fltr_mat@full_cov@(full_fltr_mat.T)
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr_mat, __pyx_v_full_cov); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_fltr_mat, __pyx_n_s_T); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_full_cov22 = __pyx_t_7; __pyx_t_7 = 0;
3709:
+3710: xm_known = full_fltr_mat@np.ravel(xm)
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_14, __pyx_v_xm) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_xm); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr_mat, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_xm_known = __pyx_t_3; __pyx_t_3 = 0;
+3711: xm_null = full_null_space@np.ravel(xm)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ravel); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_7, __pyx_v_xm) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_xm); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_null_space, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xm_null = __pyx_t_14; __pyx_t_14 = 0;
3712:
+3713: obs_flattened = pyross.utils.process_obs(obs, Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_obs), __pyx_t_7}; __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_obs), __pyx_t_7}; __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_13, ((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_13, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_obs_flattened = __pyx_t_14; __pyx_t_14 = 0;
+3714: dev=np.subtract(obs_flattened, xm_known)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_subtract); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_obs_flattened, __pyx_v_xm_known}; __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_obs_flattened, __pyx_v_xm_known}; __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_14); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_obs_flattened); __Pyx_GIVEREF(__pyx_v_obs_flattened); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_13, __pyx_v_obs_flattened); __Pyx_INCREF(__pyx_v_xm_known); __Pyx_GIVEREF(__pyx_v_xm_known); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_13, __pyx_v_xm_known); __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dev = __pyx_t_14; __pyx_t_14 = 0;
+3715: tmp = full_cov12@np.linalg.inv(full_cov22)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linalg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_inv); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_14 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_full_cov22) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_full_cov22); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_cov12, __pyx_t_14); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_tmp = __pyx_t_6; __pyx_t_6 = 0;
+3716: cov_red = np.subtract(full_cov11, tmp@(full_cov12.T))
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_subtract); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_full_cov12, __pyx_n_s_T); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_tmp, __pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_full_cov11, __pyx_t_3}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_full_cov11, __pyx_t_3}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_INCREF(__pyx_v_full_cov11); __Pyx_GIVEREF(__pyx_v_full_cov11); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_13, __pyx_v_full_cov11); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_13, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_cov_red = __pyx_t_6; __pyx_t_6 = 0;
+3717: xm_red = xm_null + tmp@dev
__pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_tmp, __pyx_v_dev); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_Add(__pyx_v_xm_null, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_xm_red = __pyx_t_7; __pyx_t_7 = 0;
+3718: return xm_red, cov_red/self.Omega, full_null_space, known_spaces.flatten()
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_v_cov_red, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_known_spaces, __pyx_n_s_flatten); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_xm_red); __Pyx_GIVEREF(__pyx_v_xm_red); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_xm_red); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __Pyx_INCREF(__pyx_v_full_null_space); __Pyx_GIVEREF(__pyx_v_full_null_space); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_full_null_space); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
3719:
+3720: def _split_spaces(self, fltr, obs):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_133_split_spaces(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_133_split_spaces(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_split_spaces (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fltr,&__pyx_n_s_obs,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_split_spaces", 1, 2, 2, 1); __PYX_ERR(0, 3720, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_split_spaces") < 0)) __PYX_ERR(0, 3720, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_fltr = values[0];
__pyx_v_obs = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_split_spaces", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3720, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._split_spaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_132_split_spaces(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_fltr, __pyx_v_obs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_132_split_spaces(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_fltr, PyObject *__pyx_v_obs) {
PyObject *__pyx_v_m = NULL;
PyObject *__pyx_v_n = NULL;
PyObject *__pyx_v_r = NULL;
PyObject *__pyx_v_q = NULL;
PyObject *__pyx_v_null_space = NULL;
PyObject *__pyx_v_known_space = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_split_spaces", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type._split_spaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_m);
__Pyx_XDECREF(__pyx_v_n);
__Pyx_XDECREF(__pyx_v_r);
__Pyx_XDECREF(__pyx_v_q);
__Pyx_XDECREF(__pyx_v_null_space);
__Pyx_XDECREF(__pyx_v_known_space);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3721: m, n = fltr.shape
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fltr, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3721, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 3721, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3721, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_m = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_n = __pyx_t_3; __pyx_t_3 = 0;
+3722: r, q = rq(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_rq); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fltr); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3722, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 3722, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3722, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_r = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_q = __pyx_t_2; __pyx_t_2 = 0;
+3723: null_space = q[:n-m]
__pyx_t_1 = PyNumber_Subtract(__pyx_v_n, __pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_q, 0, 0, NULL, &__pyx_t_1, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_null_space = __pyx_t_2; __pyx_t_2 = 0;
+3724: known_space = (q[n-m:]).T @ solve_triangular(r[:, n-m:], obs)
__pyx_t_2 = PyNumber_Subtract(__pyx_v_n, __pyx_v_m); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_q, 0, 0, &__pyx_t_2, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_solve_triangular); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Subtract(__pyx_v_n, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PySlice_New(__pyx_t_4, Py_None, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_slice_); __Pyx_GIVEREF(__pyx_slice_); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice_); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_r, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_obs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_obs); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_known_space = __pyx_t_3; __pyx_t_3 = 0;
+3725: return null_space, known_space
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_null_space); __Pyx_GIVEREF(__pyx_v_null_space); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_null_space); __Pyx_INCREF(__pyx_v_known_space); __Pyx_GIVEREF(__pyx_v_known_space); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_known_space); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3726:
3727:
+3728: cdef double _obtain_logp_for_traj_tangent(self, double [:, :] x, double Tf):
static double __pyx_f_6pyross_9inference_8SIR_type__obtain_logp_for_traj_tangent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_Tf) {
__Pyx_memviewslice __pyx_v_dx = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dx_det = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_dt;
double __pyx_v_logp;
double __pyx_v_t;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_dev = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_logp_for_traj_tangent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._obtain_logp_for_traj_tangent", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_dx, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dx_det, 1);
__Pyx_XDECREF(__pyx_v_dev);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3729: cdef:
3730: double [:, :] dx, cov
3731: double [:] xt, time_points, dx_det
3732: double dt, logp, t
+3733: Py_ssize_t i, Nf=x.shape[0]
__pyx_v_Nf = (__pyx_v_x.shape[0]);
+3734: time_points = np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3734, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+3735: dt = time_points[2]
__pyx_t_9 = 2; __pyx_v_dt = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_9 * __pyx_v_time_points.strides[0]) )));
+3736: dx = np.gradient(x, axis=0)*2
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_gradient); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_x, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3736, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_dx = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+3737: logp = 0
__pyx_v_logp = 0.0;
+3738: for i in range(1, Nf-1):
__pyx_t_11 = (__pyx_v_Nf - 1);
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3739: xt = x[i]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_x.shape[1];
__pyx_t_8.strides[0] = __pyx_v_x.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__pyx_v_xt = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3740: t = time_points[i]
__pyx_t_9 = __pyx_v_i;
__pyx_v_t = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_9 * __pyx_v_time_points.strides[0]) )));
+3741: self.det_model.set_contactMatrix(t, self.contactMatrix)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_set_contactMatrix); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_v_self->contactMatrix}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_v_self->contactMatrix}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_v_self->contactMatrix); __Pyx_GIVEREF(__pyx_v_self->contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_self->contactMatrix); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3742: self.det_model.rhs(np.multiply(xt, self.Omega), t)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_rhs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_multiply); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xt, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_4, __pyx_t_5}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_4, __pyx_t_5}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_15 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_6, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_7, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_7, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_15); __pyx_t_15 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_3); __pyx_t_7 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3743: dx_det = np.multiply(dt/self.Omega, self.det_model.dxdt)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble((__pyx_v_dt / __pyx_v_self->Omega)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dxdt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_15 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_6, __pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3743, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_dx_det, 1); __pyx_v_dx_det = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+3744: self.compute_jacobian_and_b_matrix(xt, t)
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_v_xt, __pyx_v_t, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3745: cov = np.multiply(dt, self.convert_vec_to_mat(self.B_vec))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_multiply); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3745, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_t_8, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3745, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+3746: dev = np.subtract(dx[i], dx_det)
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_subtract); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_8.data = __pyx_v_dx.data; __pyx_t_8.memview = __pyx_v_dx.memview; __PYX_INC_MEMVIEW(&__pyx_t_8, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_i; Py_ssize_t __pyx_tmp_stride = __pyx_v_dx.strides[0]; __pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_8.shape[0] = __pyx_v_dx.shape[1]; __pyx_t_8.strides[0] = __pyx_v_dx.strides[1]; __pyx_t_8.suboffsets[0] = -1; __pyx_t_15 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_dx_det, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_15, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_15, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_7); __pyx_t_15 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_dev, __pyx_t_1); __pyx_t_1 = 0;
+3747: logp += self._log_cond_p(dev, cov)
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_dev, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3747, __pyx_L1_error) __pyx_v_logp = (__pyx_v_logp + ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_log_cond_p(__pyx_v_self, __pyx_t_8, __pyx_v_cov)); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; }
+3748: return -logp
__pyx_r = (-__pyx_v_logp); goto __pyx_L0;
3749:
+3750: cdef double _log_cond_p(self, double [:] x, double [:, :] cov):
static double __pyx_f_6pyross_9inference_8SIR_type__log_cond_p(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_cov) {
__Pyx_memviewslice __pyx_v_invcov_x = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_log_cond_p;
PyObject *__pyx_v_ldet = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_log_cond_p", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._log_cond_p", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_invcov_x, 1);
__Pyx_XDECREF(__pyx_v_ldet);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3751: cdef:
3752: double [:] invcov_x
3753: double log_cond_p
3754: double det
+3755: invcov_x, ldet = pyross.utils.solve_symmetric_close_to_singular(cov, x)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_solve_symmetric_close_to_singula); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3755, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) __PYX_ERR(0, 3755, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3755, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3755, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_invcov_x = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; __pyx_v_ldet = __pyx_t_7; __pyx_t_7 = 0;
+3756: log_cond_p = - np.dot(x, invcov_x)*(self.Omega/2) - (self.dim/2)*log(2*PI)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_invcov_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->Omega / 2.0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(((__pyx_v_self->dim / 2) * log((2.0 * __pyx_v_6pyross_9inference_PI)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3756, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+3757: log_cond_p -= (ldet - self.dim*log(self.Omega))/2
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_log_cond_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->dim * log(__pyx_v_self->Omega))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyNumber_Subtract(__pyx_v_ldet, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_5, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+3758: log_cond_p -= self.dim*np.log(self.Omega)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_log_cond_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+3759: return log_cond_p
__pyx_r = __pyx_v_log_cond_p; goto __pyx_L0;
3760:
+3761: cdef _estimate_cond_cov(self, object sol, double t1, double t2):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type__estimate_cond_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sol, double __pyx_v_t1, double __pyx_v_t2) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *__pyx_cur_scope;
__Pyx_memviewslice __pyx_v_cov_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_sigma0 = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_rhs = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_estimate_cond_cov", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov(__pyx_ptype_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 3761, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_sol = __pyx_v_sol;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_sol);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sol);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._estimate_cond_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_sigma0, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XDECREF(__pyx_v_rhs);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov {
PyObject_HEAD
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_sol;
};
3762: cdef:
+3763: double [:] cov_vec, sigma0=np.zeros((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->vec_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3763, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_sigma0 = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
3764: double [:, :] cov
3765:
+3766: def rhs(t, sig):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_18_estimate_cond_cov_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_18_estimate_cond_cov_1rhs = {"rhs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_18_estimate_cond_cov_1rhs, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_18_estimate_cond_cov_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_t = 0;
PyObject *__pyx_v_sig = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_sig,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sig)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, 1); __PYX_ERR(0, 3766, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rhs") < 0)) __PYX_ERR(0, 3766, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = values[0];
__pyx_v_sig = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3766, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._estimate_cond_cov.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_18_estimate_cond_cov_rhs(__pyx_self, __pyx_v_t, __pyx_v_sig);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_18_estimate_cond_cov_rhs(PyObject *__pyx_self, PyObject *__pyx_v_t, PyObject *__pyx_v_sig) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *__pyx_outer_scope;
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5__estimate_cond_cov *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type._estimate_cond_cov.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__33 = PyTuple_Pack(3, __pyx_n_s_t, __pyx_n_s_sig, __pyx_n_s_x); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 3766, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__33);
__Pyx_GIVEREF(__pyx_tuple__33);
/* … */
__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_18_estimate_cond_cov_1rhs, 0, __pyx_n_s_SIR_type__estimate_cond_cov_loca, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3766, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_rhs = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_rhs, 3766, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 3766, __pyx_L1_error)
+3767: x = sol(t)/self.Omega # sol is an ODESolver obj for extensive variables
if (unlikely(!__pyx_cur_scope->__pyx_v_sol)) { __Pyx_RaiseClosureNameError("sol"); __PYX_ERR(0, 3767, __pyx_L1_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_sol);
__pyx_t_2 = __pyx_cur_scope->__pyx_v_sol; __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3767, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3767, __pyx_L1_error) }
__pyx_t_2 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3767, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3767, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_x = __pyx_t_3;
__pyx_t_3 = 0;
+3768: self.compute_jacobian_and_b_matrix(x, t, b_matrix=True, jacobian=True)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3768, __pyx_L1_error) }
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3768, __pyx_L1_error)
__pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3768, __pyx_L1_error)
__pyx_t_6.__pyx_n = 2;
__pyx_t_6.b_matrix = Py_True;
__pyx_t_6.jacobian = Py_True;
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_cur_scope->__pyx_v_self, __pyx_t_4, __pyx_t_5, &__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__pyx_t_4.memview = NULL;
__pyx_t_4.data = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3769: self._compute_dsigdt(sig)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3769, __pyx_L1_error) }
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_sig, PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3769, __pyx_L1_error)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_compute_dsigdt(__pyx_cur_scope->__pyx_v_self, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3769, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__pyx_t_4.memview = NULL;
__pyx_t_4.data = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3770: self.integrator_step_count += 1
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3770, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3770, __pyx_L1_error) }
__pyx_cur_scope->__pyx_v_self->integrator_step_count = (__pyx_cur_scope->__pyx_v_self->integrator_step_count + 1);
+3771: if self.max_steps_lyapunov != 0 and self.integrator_step_count > self.max_steps_lyapunov:
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3771, __pyx_L1_error) }
__pyx_t_8 = ((__pyx_cur_scope->__pyx_v_self->max_steps_lyapunov != 0) != 0);
if (__pyx_t_8) {
} else {
__pyx_t_7 = __pyx_t_8;
goto __pyx_L4_bool_binop_done;
}
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3771, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3771, __pyx_L1_error) }
__pyx_t_8 = ((__pyx_cur_scope->__pyx_v_self->integrator_step_count > __pyx_cur_scope->__pyx_v_self->max_steps_lyapunov) != 0);
__pyx_t_7 = __pyx_t_8;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_7)) {
/* … */
}
+3772: raise MaxIntegratorStepsException()
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MaxIntegratorStepsException); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 3772, __pyx_L1_error)
+3773: return self.dsigmadt
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3773, __pyx_L1_error) } __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->dsigmadt)); __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_self->dsigmadt); goto __pyx_L0;
3774:
+3775: cov_vec = self._solve_lyapunov_type_eq(rhs, sigma0, t1, t2, self.steps)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_solve_lyapunov_type_eq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_sigma0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->steps); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_v_rhs, __pyx_t_3, __pyx_t_2, __pyx_t_6, __pyx_t_7}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_v_rhs, __pyx_t_3, __pyx_t_2, __pyx_t_6, __pyx_t_7}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_9, __pyx_t_7); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3775, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cov_vec = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+3776: cov = self.convert_vec_to_mat(cov_vec)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_cur_scope->__pyx_v_self, __pyx_v_cov_vec, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3776, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+3777: return cov
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
3778:
+3779: cpdef obtain_full_mean_cov(self, double [:] x0, double Tf, Py_ssize_t Nf, Py_ssize_t inter_steps=0):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_135obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, int __pyx_skip_dispatch, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov *__pyx_optional_args) {
Py_ssize_t __pyx_v_inter_steps = ((Py_ssize_t)0);
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cond_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_temp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_full_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_ti;
double __pyx_v_tf;
PyObject *__pyx_v_times = NULL;
PyObject *__pyx_v_sol = NULL;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_inter_steps = __pyx_optional_args->inter_steps;
}
}
__PYX_INC_MEMVIEW(&__pyx_v_x0, 1);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_mean_cov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_135obtain_full_mean_cov)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 3779, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyInt_FromSsize_t(__pyx_v_inter_steps); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_7 = __pyx_t_1; __pyx_t_8 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_7)) {
PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else
#endif
{
__pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (__pyx_t_8) {
__Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_6 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_19, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_full_cov, 1);
__Pyx_XDECREF(__pyx_v_times);
__Pyx_XDECREF(__pyx_v_sol);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_135obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_135obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
Py_ssize_t __pyx_v_inter_steps;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_inter_steps,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 0, 3, 4, 1); __PYX_ERR(0, 3779, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 0, 3, 4, 2); __PYX_ERR(0, 3779, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[3] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_mean_cov") < 0)) __PYX_ERR(0, 3779, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3779, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3779, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3779, __pyx_L3_error)
if (values[3]) {
__pyx_v_inter_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_inter_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3779, __pyx_L3_error)
} else {
__pyx_v_inter_steps = ((Py_ssize_t)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3779, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_134obtain_full_mean_cov(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_134obtain_full_mean_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, Py_ssize_t __pyx_v_inter_steps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 3779, __pyx_L1_error) }
__pyx_t_2.__pyx_n = 1;
__pyx_t_2.inter_steps = __pyx_v_inter_steps;
__pyx_t_1 = __pyx_vtabptr_6pyross_9inference_SIR_type->obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov {
int __pyx_n;
Py_ssize_t inter_steps;
};
3780: cdef:
+3781: Py_ssize_t dim=self.dim, i
__pyx_t_11 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_11;
+3782: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3782, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3783: double [:, :] _xm=np.empty((inter_steps*Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_inter_steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3783, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v__xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3784: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_2, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_2, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_9, __pyx_t_10); __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
3785: double [:] xi, xf
3786: double [:, :] cond_cov, cov, temp
3787: double [:, :, :, :] full_cov
3788: double ti, tf
+3789: if inter_steps:
__pyx_t_14 = (__pyx_v_inter_steps != 0);
if (__pyx_t_14) {
/* … */
goto __pyx_L3;
}
+3790: x0 = np.multiply(x0, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1); __pyx_v_x0 = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+3791: _xm = pyross.utils.forward_euler_integration(self._rhs0, x0,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); /* … */ __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1); __pyx_v__xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3792: 0, Tf,
__pyx_t_7 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+3793: Nf, inter_steps)
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_inter_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_t_6, __pyx_t_10, __pyx_int_0, __pyx_t_7, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_t_6, __pyx_t_10, __pyx_int_0, __pyx_t_7, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_10); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_9, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_9, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_7 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3794: _xm = np.divide(_xm, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_divide); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v__xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3794, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v__xm, 1); __pyx_v__xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3795: self._xm = np.copy(_xm)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_copy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v__xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3795, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_xm); __Pyx_DECREF(((PyObject *)__pyx_v_self->_xm)); __pyx_v_self->_xm = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3796: self._interp = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_interp); __Pyx_DECREF(__pyx_v_self->_interp); __pyx_v_self->_interp = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3797: times = np.linspace(0, Nf, inter_steps*Nf)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_linspace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_inter_steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_2 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_times = __pyx_t_1; __pyx_t_1 = 0;
+3798: for i in range(dim):
__pyx_t_11 = __pyx_v_dim;
__pyx_t_15 = __pyx_t_11;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+3799: self._interp.append(interpolate.interp1d(times, _xm[:,i],
if (unlikely(__pyx_v_self->_interp == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
__PYX_ERR(0, 3799, __pyx_L1_error)
}
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_interpolate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_interp1d); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_13.data = __pyx_v__xm.data;
__pyx_t_13.memview = __pyx_v__xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
__pyx_t_13.shape[0] = __pyx_v__xm.shape[0];
__pyx_t_13.strides[0] = __pyx_v__xm.strides[0];
__pyx_t_13.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v__xm.strides[1];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_13, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_times);
__Pyx_GIVEREF(__pyx_v_times);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_times);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
__pyx_t_1 = 0;
/* … */
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_17 = __Pyx_PyList_Append(__pyx_v_self->_interp, __pyx_t_4); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 3799, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
+3800: kind='linear'))
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_kind, __pyx_n_u_linear) < 0) __PYX_ERR(0, 3800, __pyx_L1_error)
+3801: xm = _xm[::inter_steps]
__pyx_t_12.data = __pyx_v__xm.data;
__pyx_t_12.memview = __pyx_v__xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_12,
__pyx_v__xm.shape[0], __pyx_v__xm.strides[0], __pyx_v__xm.suboffsets[0],
0,
0,
&__pyx_t_9,
0,
0,
__pyx_v_inter_steps,
0,
0,
1,
1) < 0))
{
__PYX_ERR(0, 3801, __pyx_L1_error)
}
__pyx_t_12.shape[1] = __pyx_v__xm.shape[1];
__pyx_t_12.strides[1] = __pyx_v__xm.strides[1];
__pyx_t_12.suboffsets[1] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3802: sol = self.interpolate_euler
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_interpolate_euler); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_sol = __pyx_t_4; __pyx_t_4 = 0;
3803: else:
+3804: xm, sol = self.integrate(x0, 0, Tf, Nf, dense_output=True,
/*else*/ {
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_8);
__pyx_t_1 = 0;
__pyx_t_2 = 0;
__pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dense_output, Py_True) < 0) __PYX_ERR(0, 3804, __pyx_L1_error)
/* … */
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 3804, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_8 = PyList_GET_ITEM(sequence, 0);
__pyx_t_7 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
#else
__pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_18 = Py_TYPE(__pyx_t_4)->tp_iternext;
index = 0; __pyx_t_8 = __pyx_t_18(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
index = 1; __pyx_t_7 = __pyx_t_18(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_7);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_4), 2) < 0) __PYX_ERR(0, 3804, __pyx_L1_error)
__pyx_t_18 = NULL;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L7_unpacking_done;
__pyx_L6_unpacking_failed:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_18 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 3804, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3804, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
__pyx_v_sol = __pyx_t_7;
__pyx_t_7 = 0;
}
__pyx_L3:;
+3805: max_step=self.steps*Nf)
__pyx_t_2 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_max_step, __pyx_t_2) < 0) __PYX_ERR(0, 3804, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3806: cov = np.zeros((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8); __pyx_t_2 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3806, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3807: full_cov = np.zeros((Nf-1, dim, Nf-1, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_19.memview)) __PYX_ERR(0, 3807, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_full_cov = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL;
+3808: self.integrator_step_count = 0
__pyx_v_self->integrator_step_count = 0;
+3809: for i in range(Nf-1):
__pyx_t_11 = (__pyx_v_Nf - 1);
__pyx_t_15 = __pyx_t_11;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+3810: ti = time_points[i]
__pyx_t_20 = __pyx_v_i;
__pyx_v_ti = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_20 * __pyx_v_time_points.strides[0]) )));
+3811: tf = time_points[i+1]
__pyx_t_20 = (__pyx_v_i + 1);
__pyx_v_tf = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_20 * __pyx_v_time_points.strides[0]) )));
+3812: cond_cov = self._estimate_cond_cov(sol, ti, tf)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_estimate_cond_cov(__pyx_v_self, __pyx_v_sol, __pyx_v_ti, __pyx_v_tf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3812, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3812, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1); __pyx_v_cond_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3813: self._obtain_time_evol_op(sol, ti, tf)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_time_evol_op); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_ti); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_sol, __pyx_t_1, __pyx_t_4}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_sol, __pyx_t_1, __pyx_t_4}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_2 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_sol); __Pyx_GIVEREF(__pyx_v_sol); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_v_sol); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_9, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3814: cov = np.add(self.U@cov@self.U.T, cond_cov)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(((PyObject *)__pyx_v_self->U), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->U), __pyx_n_s_T); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_cond_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_5}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_5}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3815: full_cov[i, :, i, :] = cov
__pyx_t_12.data = __pyx_v_full_cov.data;
__pyx_t_12.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_12.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_12.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_cov, __pyx_t_12, 2, 2, 0) < 0)) __PYX_ERR(0, 3815, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3816: if i>0:
__pyx_t_14 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_14) {
/* … */
}
}
+3817: for j in range(0, i):
__pyx_t_21 = __pyx_v_i;
__pyx_t_22 = __pyx_t_21;
for (__pyx_t_23 = 0; __pyx_t_23 < __pyx_t_22; __pyx_t_23+=1) {
__pyx_v_j = __pyx_t_23;
+3818: temp = full_cov[j, :, i-1, :]@self.U.T
__pyx_t_12.data = __pyx_v_full_cov.data;
__pyx_t_12.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_12.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_i - 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_12.suboffsets[1] = -1;
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->U), __pyx_n_s_T); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3818, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3818, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__pyx_v_temp = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3819: full_cov[j, :, i, :] = temp
__pyx_t_12.data = __pyx_v_full_cov.data;
__pyx_t_12.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_12.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_12.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_temp, __pyx_t_12, 2, 2, 0) < 0)) __PYX_ERR(0, 3819, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3820: full_cov[i, :, j, :] = temp.T
__pyx_t_12 = __pyx_v_temp;
__PYX_INC_MEMVIEW(&__pyx_t_12, 1);
if (unlikely(__pyx_memslice_transpose(&__pyx_t_12) == 0)) __PYX_ERR(0, 3820, __pyx_L1_error)
__pyx_t_24.data = __pyx_v_full_cov.data;
__pyx_t_24.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_24, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_24.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_24.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_24.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_24.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_t_12, __pyx_t_24, 2, 2, 0) < 0)) __PYX_ERR(0, 3820, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__pyx_t_24.memview = NULL;
__pyx_t_24.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
}
3821: # returns mean and cov for all but first (fixed!) time point
+3822: return xm[1:], np.reshape(full_cov, ((Nf-1)*dim, (Nf-1)*dim))
__Pyx_XDECREF(__pyx_r); __pyx_t_12.data = __pyx_v_xm.data; __pyx_t_12.memview = __pyx_v_xm.memview; __PYX_INC_MEMVIEW(&__pyx_t_12, 0); __pyx_t_9 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_12, __pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0], 0, 0, &__pyx_t_9, 1, 0, 0, 1, 0, 0, 1) < 0)) { __PYX_ERR(0, 3822, __pyx_L1_error) } __pyx_t_12.shape[1] = __pyx_v_xm.shape[1]; __pyx_t_12.strides[1] = __pyx_v_xm.strides[1]; __pyx_t_12.suboffsets[1] = -1; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_full_cov, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_10}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_10}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_1 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_8 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
3823:
+3824: cpdef interpolate_euler(self, t):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_137interpolate_euler(PyObject *__pyx_v_self, PyObject *__pyx_v_t); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_interpolate_euler(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_t, int __pyx_skip_dispatch) {
PyObject *__pyx_v_ip = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("interpolate_euler", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_interpolate_euler); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3824, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_137interpolate_euler)) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
__pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_t);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3824, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.interpolate_euler", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_ip);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_137interpolate_euler(PyObject *__pyx_v_self, PyObject *__pyx_v_t); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_137interpolate_euler(PyObject *__pyx_v_self, PyObject *__pyx_v_t) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("interpolate_euler (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_136interpolate_euler(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_t));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_136interpolate_euler(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_t) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("interpolate_euler", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_interpolate_euler(__pyx_v_self, __pyx_v_t, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3824, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.interpolate_euler", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3825: ip = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_ip = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3826: for i in range(self.dim):
__pyx_t_5 = __pyx_v_self->dim;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3827: ip.append(self._interp[i](t))
if (unlikely(__pyx_v_self->_interp == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3827, __pyx_L1_error)
}
__Pyx_INCREF(PyList_GET_ITEM(__pyx_v_self->_interp, __pyx_v_i));
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_self->_interp, __pyx_v_i); __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3827, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ip, __pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 3827, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
+3828: return np.asarray(ip).T
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_ip) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_ip); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_T); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3829:
+3830: cpdef obtain_full_mean_cov_tangent_space(self, double [:] x0, double Tf, Py_ssize_t Nf, Py_ssize_t inter_steps=0):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_139obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, int __pyx_skip_dispatch, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space *__pyx_optional_args) {
Py_ssize_t __pyx_v_inter_steps = ((Py_ssize_t)0);
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cond_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J_dt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_temp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_full_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t;
double __pyx_v_dt;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_inter_steps = __pyx_optional_args->inter_steps;
}
}
__PYX_INC_MEMVIEW(&__pyx_v_x0, 1);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_mean_cov_tangent_spa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_139obtain_full_mean_cov_tangent_space)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 3830, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyInt_FromSsize_t(__pyx_v_inter_steps); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_7 = __pyx_t_1; __pyx_t_8 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_7)) {
PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
} else
#endif
{
__pyx_t_10 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (__pyx_t_8) {
__Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_6 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_16, 1);
__Pyx_XDECREF(__pyx_t_20);
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_full_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_139obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_139obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
Py_ssize_t __pyx_v_inter_steps;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_inter_steps,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 0, 3, 4, 1); __PYX_ERR(0, 3830, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 0, 3, 4, 2); __PYX_ERR(0, 3830, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inter_steps);
if (value) { values[3] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_mean_cov_tangent_space") < 0)) __PYX_ERR(0, 3830, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3830, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3830, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3830, __pyx_L3_error)
if (values[3]) {
__pyx_v_inter_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_inter_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3830, __pyx_L3_error)
} else {
__pyx_v_inter_steps = ((Py_ssize_t)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3830, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_138obtain_full_mean_cov_tangent_space(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_inter_steps);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_138obtain_full_mean_cov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, Py_ssize_t __pyx_v_inter_steps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 3830, __pyx_L1_error) }
__pyx_t_2.__pyx_n = 1;
__pyx_t_2.inter_steps = __pyx_v_inter_steps;
__pyx_t_1 = __pyx_vtabptr_6pyross_9inference_SIR_type->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3830, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space {
int __pyx_n;
Py_ssize_t inter_steps;
};
3831: cdef:
+3832: Py_ssize_t dim=self.dim, i
__pyx_t_11 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_11;
+3833: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3834: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_linspace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_10, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_int_0, __pyx_t_10, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_9, __pyx_t_2); __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3834, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
3835: double [:] xt
3836: double [:, :] cov, cond_cov, U, J_dt, temp
3837: double [:, :, :, :] full_cov
+3838: double t, dt=time_points[1]
__pyx_t_14 = 1; __pyx_v_dt = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_14 * __pyx_v_time_points.strides[0]) )));
+3839: if inter_steps:
__pyx_t_15 = (__pyx_v_inter_steps != 0);
if (__pyx_t_15) {
/* … */
goto __pyx_L3;
}
+3840: x0 = np.multiply(x0, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_7, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_7, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_2); __pyx_t_7 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3840, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1); __pyx_v_x0 = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+3841: xm = pyross.utils.forward_euler_integration(self._rhs0, x0, 0, Tf,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3842: Nf, inter_steps)
__pyx_t_10 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_inter_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_t_6, __pyx_t_2, __pyx_int_0, __pyx_t_7, __pyx_t_10, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_t_6, __pyx_t_2, __pyx_int_0, __pyx_t_7, __pyx_t_10, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_2); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_9, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_9, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3843: xm = xm[::inter_steps]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_12,
__pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0],
0,
0,
&__pyx_t_9,
0,
0,
__pyx_v_inter_steps,
0,
0,
1,
1) < 0))
{
__PYX_ERR(0, 3843, __pyx_L1_error)
}
__pyx_t_12.shape[1] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[1] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[1] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3844: xm = np.divide(xm, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_divide); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
3845: else:
+3846: xm = self.integrate(x0, 0, Tf, Nf, max_step=self.steps*Nf)
/*else*/ {
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0);
__Pyx_GIVEREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
__pyx_t_8 = 0;
__pyx_t_7 = 0;
__pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_max_step, __pyx_t_7) < 0) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3846, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__pyx_v_xm = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
}
__pyx_L3:;
+3847: full_cov = np.zeros((Nf-1, dim, Nf-1, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_8); __pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3847, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_full_cov = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL;
+3848: cov = np.zeros((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8); __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3849: for i in range(Nf-1):
__pyx_t_11 = (__pyx_v_Nf - 1);
__pyx_t_17 = __pyx_t_11;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+3850: t = time_points[i]
__pyx_t_14 = __pyx_v_i;
__pyx_v_t = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_14 * __pyx_v_time_points.strides[0]) )));
+3851: xt = xm[i]
__pyx_t_13.data = __pyx_v_xm.data;
__pyx_t_13.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_13.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__pyx_v_xt = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+3852: self.compute_jacobian_and_b_matrix(xt, t, b_matrix=True, jacobian=True)
__pyx_t_19.__pyx_n = 2;
__pyx_t_19.b_matrix = Py_True;
__pyx_t_19.jacobian = Py_True;
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_v_xt, __pyx_v_t, &__pyx_t_19); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3853: cond_cov = np.multiply(dt, self.convert_vec_to_mat(self.B_vec))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_multiply); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 3853, __pyx_L1_error) __pyx_t_10 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_t_13, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __pyx_t_5 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_t_10); __pyx_t_4 = 0; __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1); __pyx_v_cond_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3854: J_dt = np.multiply(dt, self.J_mat)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_multiply); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_8, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_8, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_8); __Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, ((PyObject *)__pyx_v_self->J_mat)); __pyx_t_8 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3854, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1); __pyx_v_J_dt = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3855: U = np.add(np.identity(dim), J_dt)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_add); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_identity); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_J_dt, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3855, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_U, 1); __pyx_v_U = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3856: cov = np.add(np.dot(np.dot(U, cov), U.T), cond_cov)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_add); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_dot); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_U, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_6}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_6}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_20 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_20, 0+__pyx_t_9, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_20, 1+__pyx_t_9, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_20, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __pyx_v_U; __PYX_INC_MEMVIEW(&__pyx_t_12, 1); if (unlikely(__pyx_memslice_transpose(&__pyx_t_12) == 0)) __PYX_ERR(0, 3856, __pyx_L1_error) __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __pyx_t_20 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_20)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_20); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_20, __pyx_t_10, __pyx_t_2}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_20, __pyx_t_10, __pyx_t_2}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_20) { __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_20); __pyx_t_20 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_2); __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_cond_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_7); __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3856, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3857: full_cov[i, :, i, :] = cov
__pyx_t_12.data = __pyx_v_full_cov.data;
__pyx_t_12.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_12.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_12.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_cov, __pyx_t_12, 2, 2, 0) < 0)) __PYX_ERR(0, 3857, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3858: if i>0:
__pyx_t_15 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_15) {
/* … */
}
}
+3859: for j in range(0, i):
__pyx_t_21 = __pyx_v_i;
__pyx_t_22 = __pyx_t_21;
for (__pyx_t_23 = 0; __pyx_t_23 < __pyx_t_22; __pyx_t_23+=1) {
__pyx_v_j = __pyx_t_23;
+3860: temp = np.dot(full_cov[j, :, i-1, :], U.T)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_12.data = __pyx_v_full_cov.data; __pyx_t_12.memview = __pyx_v_full_cov.memview; __PYX_INC_MEMVIEW(&__pyx_t_12, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_j; Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0]; __pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1]; __pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1]; __pyx_t_12.suboffsets[0] = -1; { Py_ssize_t __pyx_tmp_idx = (__pyx_v_i - 1); Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2]; __pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3]; __pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3]; __pyx_t_12.suboffsets[1] = -1; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __pyx_t_12 = __pyx_v_U; __PYX_INC_MEMVIEW(&__pyx_t_12, 1); if (unlikely(__pyx_memslice_transpose(&__pyx_t_12) == 0)) __PYX_ERR(0, 3860, __pyx_L1_error) __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1); __pyx_v_temp = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3861: full_cov[j, :, i, :] = temp
__pyx_t_12.data = __pyx_v_full_cov.data;
__pyx_t_12.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_12.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_12.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_12.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_12.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_temp, __pyx_t_12, 2, 2, 0) < 0)) __PYX_ERR(0, 3861, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3862: full_cov[i, :, j, :] = temp.T
__pyx_t_12 = __pyx_v_temp;
__PYX_INC_MEMVIEW(&__pyx_t_12, 1);
if (unlikely(__pyx_memslice_transpose(&__pyx_t_12) == 0)) __PYX_ERR(0, 3862, __pyx_L1_error)
__pyx_t_24.data = __pyx_v_full_cov.data;
__pyx_t_24.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_24, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_24.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_24.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_24.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_24.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_t_12, __pyx_t_24, 2, 2, 0) < 0)) __PYX_ERR(0, 3862, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__pyx_t_24.memview = NULL;
__pyx_t_24.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
}
+3863: return xm[1:], np.reshape(full_cov, ((Nf-1)*dim, (Nf-1)*dim)) # returns mean and cov for all but first (fixed!) time point
__Pyx_XDECREF(__pyx_r); __pyx_t_12.data = __pyx_v_xm.data; __pyx_t_12.memview = __pyx_v_xm.memview; __PYX_INC_MEMVIEW(&__pyx_t_12, 0); __pyx_t_9 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_12, __pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0], 0, 0, &__pyx_t_9, 1, 0, 0, 1, 0, 0, 1) < 0)) { __PYX_ERR(0, 3863, __pyx_L1_error) } __pyx_t_12.shape[1] = __pyx_v_xm.shape[1]; __pyx_t_12.strides[1] = __pyx_v_xm.strides[1]; __pyx_t_12.suboffsets[1] = -1; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_12, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_full_cov, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_10}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_10}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_10); __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3863, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
3864:
+3865: cpdef _rhs0(self, t, xt):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_141_rhs0(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type__rhs0(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_t, PyObject *__pyx_v_xt, int __pyx_skip_dispatch) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_rhs0", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rhs0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_141_rhs0)) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_t, __pyx_v_xt};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_t, __pyx_v_xt};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
} else
#endif
{
__pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_t);
__Pyx_GIVEREF(__pyx_v_t);
PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_t);
__Pyx_INCREF(__pyx_v_xt);
__Pyx_GIVEREF(__pyx_v_xt);
PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_xt);
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SIR_type._rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_141_rhs0(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_141_rhs0(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_t = 0;
PyObject *__pyx_v_xt = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_rhs0 (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_xt,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xt)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_rhs0", 1, 2, 2, 1); __PYX_ERR(0, 3865, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_rhs0") < 0)) __PYX_ERR(0, 3865, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = values[0];
__pyx_v_xt = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_rhs0", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3865, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_140_rhs0(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_t, __pyx_v_xt);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_140_rhs0(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_t, PyObject *__pyx_v_xt) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_rhs0", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type__rhs0(__pyx_v_self, __pyx_v_t, __pyx_v_xt, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3865, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type._rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3866: self.det_model.set_contactMatrix(t, self.contactMatrix)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_contactMatrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_t, __pyx_v_self->contactMatrix}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_t, __pyx_v_self->contactMatrix}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_t); __Pyx_GIVEREF(__pyx_v_t); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_t); __Pyx_INCREF(__pyx_v_self->contactMatrix); __Pyx_GIVEREF(__pyx_v_self->contactMatrix); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_self->contactMatrix); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3867: self.det_model.rhs(xt, t)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_rhs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_xt, __pyx_v_t}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_xt, __pyx_v_t}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_xt); __Pyx_GIVEREF(__pyx_v_xt); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_xt); __Pyx_INCREF(__pyx_v_t); __Pyx_GIVEREF(__pyx_v_t); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_t); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3868: return self.det_model.dxdt
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dxdt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
3869:
+3870: cpdef _obtain_time_evol_op_2(self, sol, double t1, double t2):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_143_obtain_time_evol_op_2(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type__obtain_time_evol_op_2(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sol, double __pyx_v_t1, double __pyx_v_t2, int __pyx_skip_dispatch) {
__Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xf = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_epsilon;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_pos = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_time_evol_op_2", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_time_evol_op_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_143_obtain_time_evol_op_2)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
__pyx_t_7 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_7 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_sol, __pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_sol, __pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
__pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (__pyx_t_6) {
__Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
}
__Pyx_INCREF(__pyx_v_sol);
__Pyx_GIVEREF(__pyx_v_sol);
PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_sol);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_4);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__Pyx_XDECREF(__pyx_v_pos);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_143_obtain_time_evol_op_2(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_143_obtain_time_evol_op_2(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sol = 0;
double __pyx_v_t1;
double __pyx_v_t2;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_time_evol_op_2 (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sol,&__pyx_n_s_t1,&__pyx_n_s_t2,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sol)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op_2", 1, 3, 3, 1); __PYX_ERR(0, 3870, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op_2", 1, 3, 3, 2); __PYX_ERR(0, 3870, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_obtain_time_evol_op_2") < 0)) __PYX_ERR(0, 3870, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_sol = values[0];
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3870, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3870, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op_2", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3870, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_142_obtain_time_evol_op_2(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sol, __pyx_v_t1, __pyx_v_t2);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_142_obtain_time_evol_op_2(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sol, double __pyx_v_t1, double __pyx_v_t2) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_time_evol_op_2", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type__obtain_time_evol_op_2(__pyx_v_self, __pyx_v_sol, __pyx_v_t1, __pyx_v_t2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3871: cdef:
+3872: double [:, :] U=self.U
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->U), PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3872, __pyx_L1_error) __pyx_v_U = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
3873: double [:] xi, xf
+3874: double epsilon=1./self.Omega
__pyx_v_epsilon = (1. / __pyx_v_self->Omega);
+3875: Py_ssize_t i, j, steps=self.steps
__pyx_t_10 = __pyx_v_self->steps; __pyx_v_steps = __pyx_t_10;
+3876: if isclose(t1, t2):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_isclose); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_8}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_8}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_8); __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3876, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_11) { /* … */ goto __pyx_L3; }
+3877: U = np.eye(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_eye); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 3877, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_U, 1); __pyx_v_U = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
3878: else:
+3879: xi = sol(t1)/self.Omega
/*else*/ {
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3879, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_sol);
__pyx_t_2 = __pyx_v_sol; __pyx_t_8 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3879, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3879, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3879, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3879, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_xi = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+3880: xf = sol(t2)/self.Omega
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_sol); __pyx_t_1 = __pyx_v_sol; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Omega); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3880, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_xf = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+3881: for i in range(self.dim):
__pyx_t_10 = __pyx_v_self->dim;
__pyx_t_13 = __pyx_t_10;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_i = __pyx_t_14;
+3882: xi[i] += epsilon
__pyx_t_15 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_xi.data + __pyx_t_15 * __pyx_v_xi.strides[0]) )) += __pyx_v_epsilon;
+3883: pos = self.integrate(xi, t1, t2, steps)[steps-1]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_xi, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_3, __pyx_t_8, __pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_3, __pyx_t_8, __pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_16 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_7, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_7, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_8 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = (__pyx_v_steps - 1); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_17, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_pos, __pyx_t_1); __pyx_t_1 = 0;
+3884: for j in range(self.dim):
__pyx_t_17 = __pyx_v_self->dim;
__pyx_t_18 = __pyx_t_17;
for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
__pyx_v_j = __pyx_t_19;
+3885: U[j, i] = (pos[j]-xf[j])/(epsilon)
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pos, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __pyx_v_j; __pyx_t_2 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_xf.data + __pyx_t_15 * __pyx_v_xf.strides[0]) )))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_16 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_epsilon); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_16, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3885, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = __pyx_v_j; __pyx_t_21 = __pyx_v_i; *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_U.data + __pyx_t_15 * __pyx_v_U.strides[0]) ) + __pyx_t_21 * __pyx_v_U.strides[1]) )) = __pyx_t_20; }
+3886: xi[i] -= epsilon
__pyx_t_21 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_xi.data + __pyx_t_21 * __pyx_v_xi.strides[0]) )) -= __pyx_v_epsilon;
}
}
__pyx_L3:;
3887:
+3888: def _obtain_time_evol_op(self, sol, double t1, double t2):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_145_obtain_time_evol_op(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_145_obtain_time_evol_op(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sol = 0;
double __pyx_v_t1;
double __pyx_v_t2;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_time_evol_op (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sol,&__pyx_n_s_t1,&__pyx_n_s_t2,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sol)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op", 1, 3, 3, 1); __PYX_ERR(0, 3888, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op", 1, 3, 3, 2); __PYX_ERR(0, 3888, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_obtain_time_evol_op") < 0)) __PYX_ERR(0, 3888, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_sol = values[0];
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3888, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3888, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_obtain_time_evol_op", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3888, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_144_obtain_time_evol_op(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sol, __pyx_v_t1, __pyx_v_t2);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_144_obtain_time_evol_op(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_sol, double __pyx_v_t1, double __pyx_v_t2) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *__pyx_cur_scope;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_rhs = 0;
PyObject *__pyx_v_U0 = NULL;
PyObject *__pyx_v_U_vec = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_obtain_time_evol_op", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op(__pyx_ptype_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 3888, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_sol = __pyx_v_sol;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_sol);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sol);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_rhs);
__Pyx_XDECREF(__pyx_v_U0);
__Pyx_XDECREF(__pyx_v_U_vec);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op {
PyObject_HEAD
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_sol;
};
3889: cdef:
+3890: Py_ssize_t steps=self.steps
__pyx_t_1 = __pyx_cur_scope->__pyx_v_self->steps; __pyx_v_steps = __pyx_t_1;
3891:
+3892: def rhs(t, U_vec):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_1rhs = {"rhs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_1rhs, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_t = 0;
PyObject *__pyx_v_U_vec = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_U_vec,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U_vec)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, 1); __PYX_ERR(0, 3892, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rhs") < 0)) __PYX_ERR(0, 3892, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = values[0];
__pyx_v_U_vec = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3892, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_rhs(__pyx_self, __pyx_v_t, __pyx_v_U_vec);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_rhs(PyObject *__pyx_self, PyObject *__pyx_v_t, PyObject *__pyx_v_U_vec) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *__pyx_outer_scope;
PyObject *__pyx_v_xt = NULL;
PyObject *__pyx_v_U_mat = NULL;
PyObject *__pyx_v_dUdt = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6__obtain_time_evol_op *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type._obtain_time_evol_op.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_xt);
__Pyx_XDECREF(__pyx_v_U_mat);
__Pyx_XDECREF(__pyx_v_dUdt);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__35 = PyTuple_Pack(5, __pyx_n_s_t, __pyx_n_s_U_vec, __pyx_n_s_xt, __pyx_n_s_U_mat, __pyx_n_s_dUdt); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 3892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__35);
__Pyx_GIVEREF(__pyx_tuple__35);
/* … */
__pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_20_obtain_time_evol_op_1rhs, 0, __pyx_n_s_obtain_time_evol_op_locals_rhs, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_rhs = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_rhs, 3892, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 3892, __pyx_L1_error)
+3893: xt = sol(t)/self.Omega
if (unlikely(!__pyx_cur_scope->__pyx_v_sol)) { __Pyx_RaiseClosureNameError("sol"); __PYX_ERR(0, 3893, __pyx_L1_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_sol);
__pyx_t_2 = __pyx_cur_scope->__pyx_v_sol; __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3893, __pyx_L1_error) }
__pyx_t_2 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_xt = __pyx_t_3;
__pyx_t_3 = 0;
+3894: self.compute_jacobian_and_b_matrix(xt, t, b_matrix=False, jacobian=True)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3894, __pyx_L1_error) }
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_xt, PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3894, __pyx_L1_error)
__pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3894, __pyx_L1_error)
__pyx_t_6.__pyx_n = 2;
__pyx_t_6.b_matrix = Py_False;
__pyx_t_6.jacobian = Py_True;
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_cur_scope->__pyx_v_self, __pyx_t_4, __pyx_t_5, &__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__pyx_t_4.memview = NULL;
__pyx_t_4.data = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3895: U_mat = np.reshape(U_vec, (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3895, __pyx_L1_error) } __pyx_t_2 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3895, __pyx_L1_error) } __pyx_t_7 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_U_vec, __pyx_t_8}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_U_vec, __pyx_t_8}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_U_vec); __Pyx_GIVEREF(__pyx_v_U_vec); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_v_U_vec); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_U_mat = __pyx_t_3; __pyx_t_3 = 0;
+3896: dUdt = np.dot(self.J_mat, U_mat)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3896, __pyx_L1_error) } __pyx_t_1 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_self->J_mat), __pyx_v_U_mat}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_self->J_mat), __pyx_v_U_mat}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->J_mat)); __Pyx_INCREF(__pyx_v_U_mat); __Pyx_GIVEREF(__pyx_v_U_mat); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_v_U_mat); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dUdt = __pyx_t_3; __pyx_t_3 = 0;
+3897: self.integrator_step_count += 1
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3897, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3897, __pyx_L1_error) }
__pyx_cur_scope->__pyx_v_self->integrator_step_count = (__pyx_cur_scope->__pyx_v_self->integrator_step_count + 1);
+3898: if self.max_steps_lyapunov != 0 and self.integrator_step_count > self.max_steps_lyapunov:
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3898, __pyx_L1_error) }
__pyx_t_11 = ((__pyx_cur_scope->__pyx_v_self->max_steps_lyapunov != 0) != 0);
if (__pyx_t_11) {
} else {
__pyx_t_10 = __pyx_t_11;
goto __pyx_L4_bool_binop_done;
}
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3898, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3898, __pyx_L1_error) }
__pyx_t_11 = ((__pyx_cur_scope->__pyx_v_self->integrator_step_count > __pyx_cur_scope->__pyx_v_self->max_steps_lyapunov) != 0);
__pyx_t_10 = __pyx_t_11;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_10)) {
/* … */
}
+3899: raise MaxIntegratorStepsException()
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MaxIntegratorStepsException); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 3899, __pyx_L1_error)
+3900: return np.ravel(dUdt)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_v_dUdt) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_dUdt); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3901:
+3902: if isclose(t1, t2): ## float precision
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_isclose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3902, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L3; }
+3903: self.U = np.eye(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_eye); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3903, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->U); __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->U)); __pyx_cur_scope->__pyx_v_self->U = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
3904: else:
+3905: U0 = np.identity((self.dim)).flatten()
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_identity); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_flatten); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_U0 = __pyx_t_2;
__pyx_t_2 = 0;
+3906: U_vec = self._solve_lyapunov_type_eq(rhs, U0, t1, t2, steps)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_solve_lyapunov_type_eq); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_6, __pyx_v_rhs, __pyx_v_U0, __pyx_t_8, __pyx_t_3, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_6, __pyx_v_rhs, __pyx_v_U0, __pyx_t_8, __pyx_t_3, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_7, __pyx_v_rhs); __Pyx_INCREF(__pyx_v_U0); __Pyx_GIVEREF(__pyx_v_U0); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_7, __pyx_v_U0); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_7, __pyx_t_4); __pyx_t_8 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_U_vec = __pyx_t_2; __pyx_t_2 = 0;
+3907: self.U = np.reshape(U_vec, (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_U_vec, __pyx_t_3}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_U_vec, __pyx_t_3}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_U_vec); __Pyx_GIVEREF(__pyx_v_U_vec); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_U_vec); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3907, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->U); __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->U)); __pyx_cur_scope->__pyx_v_self->U = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; } __pyx_L3:;
3908:
+3909: def _solve_lyapunov_type_eq(self, rhs, M0, t1, t2, steps):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_147_solve_lyapunov_type_eq(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_147_solve_lyapunov_type_eq(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_rhs = 0;
PyObject *__pyx_v_M0 = 0;
PyObject *__pyx_v_t1 = 0;
PyObject *__pyx_v_t2 = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_solve_lyapunov_type_eq (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rhs,&__pyx_n_s_M0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_steps,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rhs)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_solve_lyapunov_type_eq", 1, 5, 5, 1); __PYX_ERR(0, 3909, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_solve_lyapunov_type_eq", 1, 5, 5, 2); __PYX_ERR(0, 3909, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_solve_lyapunov_type_eq", 1, 5, 5, 3); __PYX_ERR(0, 3909, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_solve_lyapunov_type_eq", 1, 5, 5, 4); __PYX_ERR(0, 3909, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_solve_lyapunov_type_eq") < 0)) __PYX_ERR(0, 3909, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_rhs = values[0];
__pyx_v_M0 = values[1];
__pyx_v_t1 = values[2];
__pyx_v_t2 = values[3];
__pyx_v_steps = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_solve_lyapunov_type_eq", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3909, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._solve_lyapunov_type_eq", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_146_solve_lyapunov_type_eq(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_146_solve_lyapunov_type_eq(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_rhs, PyObject *__pyx_v_M0, PyObject *__pyx_v_t1, PyObject *__pyx_v_t2, PyObject *__pyx_v_steps) {
PyObject *__pyx_v_sol_vec = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_solve_lyapunov_type_eq", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type._solve_lyapunov_type_eq", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_sol_vec);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3910: if self.lyapunov_method=='euler':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->lyapunov_method, __pyx_n_u_euler, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3910, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+3911: sol_vec = pyross.utils.forward_euler_integration(rhs, M0, t1, t2, steps)[steps-1]
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_rhs); __Pyx_INCREF(__pyx_v_M0); __Pyx_GIVEREF(__pyx_v_M0); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_M0); __Pyx_INCREF(__pyx_v_t1); __Pyx_GIVEREF(__pyx_v_t1); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_t1); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_t2); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, __pyx_v_steps); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_v_steps, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_sol_vec = __pyx_t_7; __pyx_t_7 = 0;
+3912: elif self.lyapunov_method=='RK45':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->lyapunov_method, __pyx_n_u_RK45, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3912, __pyx_L1_error) __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+3913: res = solve_ivp(rhs, (t1, t2), M0, method='RK45', t_eval=np.array([t2]), first_step=(t2-t1)/steps, max_step=(t2-t1)/steps, rtol=self.rtol_lyapunov)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_t1); __Pyx_GIVEREF(__pyx_v_t1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_t1); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_t2); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __Pyx_INCREF(__pyx_v_M0); __Pyx_GIVEREF(__pyx_v_M0); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_M0); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_method, __pyx_n_u_RK45) < 0) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_t2); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_t_eval, __pyx_t_5) < 0) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Subtract(__pyx_v_t2, __pyx_v_t1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_v_steps); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_first_step, __pyx_t_9) < 0) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyNumber_Subtract(__pyx_v_t2, __pyx_v_t1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_9, __pyx_v_steps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_max_step, __pyx_t_5) < 0) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->rtol_lyapunov); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_rtol, __pyx_t_5) < 0) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_res = __pyx_t_5; __pyx_t_5 = 0;
+3914: sol_vec = res.y[:, 0]
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_tuple__2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_sol_vec = __pyx_t_4; __pyx_t_4 = 0;
+3915: elif self.lyapunov_method=='LSODA':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->lyapunov_method, __pyx_n_u_LSODA, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3915, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+3916: res = solve_ivp(rhs, (t1, t2), M0, method='LSODA', t_eval=np.array([t2]), first_step=(t2-t1)/steps, max_step=(t2-t1)/steps, rtol=self.rtol_lyapunov)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_t1); __Pyx_GIVEREF(__pyx_v_t1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_t1); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_t2); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __Pyx_INCREF(__pyx_v_M0); __Pyx_GIVEREF(__pyx_v_M0); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_M0); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyList_SET_ITEM(__pyx_t_9, 0, __pyx_v_t2); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_t_eval, __pyx_t_7) < 0) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Subtract(__pyx_v_t2, __pyx_v_t1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_v_steps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_first_step, __pyx_t_8) < 0) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Subtract(__pyx_v_t2, __pyx_v_t1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_v_steps); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_max_step, __pyx_t_7) < 0) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->rtol_lyapunov); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_rtol, __pyx_t_7) < 0) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_res = __pyx_t_7; __pyx_t_7 = 0;
+3917: sol_vec = res.y[:, 0]
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_y); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_tuple__2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_sol_vec = __pyx_t_5; __pyx_t_5 = 0;
+3918: elif self.lyapunov_method=='RK2':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->lyapunov_method, __pyx_n_u_RK2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3918, __pyx_L1_error) __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+3919: sol_vec = pyross.utils.RK2_integration(rhs, M0, t1, t2, steps)[steps-1]
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pyross); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_RK2_integration); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); } else #endif { __pyx_t_4 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_rhs); __Pyx_INCREF(__pyx_v_M0); __Pyx_GIVEREF(__pyx_v_M0); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_M0); __Pyx_INCREF(__pyx_v_t1); __Pyx_GIVEREF(__pyx_v_t1); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_v_t1); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_6, __pyx_v_t2); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_6, __pyx_v_steps); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_steps, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_sol_vec = __pyx_t_4; __pyx_t_4 = 0;
+3920: elif self.lyapunov_method=='RK4':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->lyapunov_method, __pyx_n_u_RK4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3920, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (likely(__pyx_t_2)) { /* … */ goto __pyx_L3; }
+3921: sol_vec = pyross.utils.RK4_integration(rhs, M0, t1, t2, steps)[steps-1]
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pyross); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_RK4_integration); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_rhs, __pyx_v_M0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_3 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_v_rhs); __Pyx_INCREF(__pyx_v_M0); __Pyx_GIVEREF(__pyx_v_M0); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_v_M0); __Pyx_INCREF(__pyx_v_t1); __Pyx_GIVEREF(__pyx_v_t1); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_v_t1); __Pyx_INCREF(__pyx_v_t2); __Pyx_GIVEREF(__pyx_v_t2); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_6, __pyx_v_t2); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_3, 4+__pyx_t_6, __pyx_v_steps); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_steps, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3921, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_sol_vec = __pyx_t_3; __pyx_t_3 = 0;
3922: else:
+3923: raise Exception("Error: lyapunov method not found. Use set_lyapunov_method to change the method")
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3923, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 3923, __pyx_L1_error)
}
__pyx_L3:;
/* … */
__pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_Error_lyapunov_method_not_found); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 3923, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__37);
__Pyx_GIVEREF(__pyx_tuple__37);
+3924: return sol_vec
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_sol_vec); __pyx_r = __pyx_v_sol_vec; goto __pyx_L0;
3925:
+3926: cdef _compute_dsigdt(self, double [:] sig):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type__compute_dsigdt(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_sig) {
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_dsigdt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_term_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_sigma_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_linear_term = 0;
__Pyx_LocalBuf_ND __pyx_pybuffernd_linear_term;
__Pyx_Buffer __pyx_pybuffer_linear_term;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_compute_dsigdt", 0);
__pyx_pybuffer_linear_term.pybuffer.buf = NULL;
__pyx_pybuffer_linear_term.refcount = 0;
__pyx_pybuffernd_linear_term.data = NULL;
__pyx_pybuffernd_linear_term.rcbuffer = &__pyx_pybuffer_linear_term;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type._compute_dsigdt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_dsigdt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_term_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_sigma_mat, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_linear_term);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3927: cdef:
3928: Py_ssize_t i, j
+3929: double [:] dsigdt=self.dsigmadt, B_vec=self.B_vec, linear_term_vec
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->dsigmadt), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3929, __pyx_L1_error) __pyx_v_dsigdt = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3929, __pyx_L1_error) __pyx_v_B_vec = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
3930: double [:, :] sigma_mat
3931: np.ndarray[DTYPE_t, ndim=2] linear_term
+3932: sigma_mat = self.convert_vec_to_mat(sig)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_v_sig, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3932, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_sigma_mat = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3933: linear_term = np.dot(self.J_mat, sigma_mat) + np.dot(sigma_mat, (self.J_mat).T)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_sigma_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->J_mat), __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->J_mat), __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_sigma_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->J_mat), __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_10 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_7, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3933, __pyx_L1_error) __pyx_t_11 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer, (PyObject*)__pyx_v_linear_term, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); } __pyx_t_12 = __pyx_t_13 = __pyx_t_14 = 0; } __pyx_pybuffernd_linear_term.diminfo[0].strides = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_linear_term.diminfo[0].shape = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_linear_term.diminfo[1].strides = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_linear_term.diminfo[1].shape = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 3933, __pyx_L1_error) } __pyx_t_11 = 0; __pyx_v_linear_term = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+3934: linear_term_vec = linear_term[(self.rows, self.cols)]
__pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_v_self->rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->rows)); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cols)); PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->cols)); __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_term), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3934, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_linear_term_vec = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3935: for i in range(self.vec_size):
__pyx_t_15 = __pyx_v_self->vec_size;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_i = __pyx_t_17;
+3936: dsigdt[i] = B_vec[i] + linear_term_vec[i]
__pyx_t_18 = __pyx_v_i;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_dsigdt.data + __pyx_t_20 * __pyx_v_dsigdt.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_B_vec.data + __pyx_t_18 * __pyx_v_B_vec.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_linear_term_vec.data + __pyx_t_19 * __pyx_v_linear_term_vec.strides[0]) ))));
}
3937:
+3938: cpdef convert_vec_to_mat(self, double [:] cov):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_149convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_convert_vec_to_mat(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_cov, int __pyx_skip_dispatch) {
__Pyx_memviewslice __pyx_v_cov_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_count;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_convert_vec_to_mat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_149convert_vec_to_mat)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_cov.memview)) { __Pyx_RaiseUnboundLocalError("cov"); __PYX_ERR(0, 3938, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cov, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov_mat, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_149convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_149convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov) {
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat (wrapper)", 0);
assert(__pyx_arg_cov); {
__pyx_v_cov = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_arg_cov, PyBUF_WRITABLE); if (unlikely(!__pyx_v_cov.memview)) __PYX_ERR(0, 3938, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_148convert_vec_to_mat(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_cov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_148convert_vec_to_mat(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_cov) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_cov.memview)) { __Pyx_RaiseUnboundLocalError("cov"); __PYX_ERR(0, 3938, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_convert_vec_to_mat(__pyx_v_self, __pyx_v_cov, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3939: cdef:
3940: double [:, :] cov_mat
+3941: Py_ssize_t i, j, count=0, dim=self.dim
__pyx_v_count = 0; __pyx_t_6 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_6;
+3942: cov_mat = np.empty((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3942, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_mat = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+3943: for i in range(dim):
__pyx_t_6 = __pyx_v_dim;
__pyx_t_8 = __pyx_t_6;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+3944: cov_mat[i, i] = cov[count]
__pyx_t_10 = __pyx_v_count;
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = __pyx_v_i;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_11 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_12 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_10 * __pyx_v_cov.strides[0]) )));
+3945: count += 1
__pyx_v_count = (__pyx_v_count + 1);
+3946: for j in range(i+1, dim):
__pyx_t_13 = __pyx_v_dim;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = (__pyx_v_i + 1); __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_j = __pyx_t_15;
+3947: cov_mat[i, j] = cov[count]
__pyx_t_10 = __pyx_v_count;
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = __pyx_v_j;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_12 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_11 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_10 * __pyx_v_cov.strides[0]) )));
+3948: cov_mat[j, i] = cov[count]
__pyx_t_10 = __pyx_v_count;
__pyx_t_11 = __pyx_v_j;
__pyx_t_12 = __pyx_v_i;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_11 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_12 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_10 * __pyx_v_cov.strides[0]) )));
+3949: count += 1
__pyx_v_count = (__pyx_v_count + 1);
}
}
+3950: return cov_mat
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_cov_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3951:
+3952: def _process_contact_matrix(self, contactMatrix, generator, intervention_fun):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_151_process_contact_matrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_151_process_contact_matrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_process_contact_matrix (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_contactMatrix,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_process_contact_matrix", 1, 3, 3, 1); __PYX_ERR(0, 3952, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_process_contact_matrix", 1, 3, 3, 2); __PYX_ERR(0, 3952, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_process_contact_matrix") < 0)) __PYX_ERR(0, 3952, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_contactMatrix = values[0];
__pyx_v_generator = values[1];
__pyx_v_intervention_fun = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_process_contact_matrix", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3952, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._process_contact_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_150_process_contact_matrix(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_contactMatrix, __pyx_v_generator, __pyx_v_intervention_fun);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_150_process_contact_matrix(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_process_contact_matrix", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type._process_contact_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3953: if (contactMatrix is None) == (generator is None):
__pyx_t_1 = (__pyx_v_contactMatrix == Py_None);
__pyx_t_2 = (__pyx_v_generator == Py_None);
__pyx_t_3 = ((__pyx_t_1 == __pyx_t_2) != 0);
if (unlikely(__pyx_t_3)) {
/* … */
}
+3954: raise Exception('Specify either a fixed contactMatrix or a generator')
__pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3954, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 3954, __pyx_L1_error) /* … */ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_Specify_either_a_fixed_contactMa); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 3954, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38);
+3955: if (intervention_fun is not None) and (generator is None):
__pyx_t_2 = (__pyx_v_intervention_fun != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
} else {
__pyx_t_3 = __pyx_t_1;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_1 = (__pyx_v_generator == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
__pyx_t_3 = __pyx_t_2;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+3956: raise Exception('Specify a generator')
__pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 3956, __pyx_L1_error) /* … */ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u_Specify_a_generator); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 3956, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__39); __Pyx_GIVEREF(__pyx_tuple__39);
+3957: if contactMatrix is not None:
__pyx_t_3 = (__pyx_v_contactMatrix != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+3958: self.contactMatrix = contactMatrix
__Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); __Pyx_GOTREF(__pyx_v_self->contactMatrix); __Pyx_DECREF(__pyx_v_self->contactMatrix); __pyx_v_self->contactMatrix = __pyx_v_contactMatrix;
3959:
3960:
+3961: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_x, CYTHON_UNUSED double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix *__pyx_optional_args) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
3962: b_matrix=True, jacobian=False):
+3963: raise NotImplementedError("Please Implement compute_jacobian_and_b_matrix in subclass")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3963, __pyx_L1_error) /* … */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_u_Please_Implement_compute_jacobia); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 3963, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40);
3964:
+3965: def integrate(self, double [:] x0, double t1, double t2, Py_ssize_t steps,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_153integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_152integrate[] = "An light weight integrate method similar to `simulate` in pyross.deterministic\n\n Parameters\n ----------\n x0: np.array\n Initial state of the given model\n t1: float\n Initial time of integrator\n t2: float\n Final time of integrator\n steps: int\n Number of time steps for numerical integrator evaluation.\n max_step: int, optional\n The maximum allowed step size of the integrator.\n\n Returns\n -------\n sol: np.array\n The state of the system evaulated at the time point specified. Only used if det_method is set to 'solve_ivp'.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_153integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t1;
double __pyx_v_t2;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_dense_output = 0;
PyObject *__pyx_v_max_step = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_steps,&__pyx_n_s_dense_output,&__pyx_n_s_max_step,0};
PyObject* values[6] = {0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_152integrate(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_t1, double __pyx_v_t2, Py_ssize_t __pyx_v_steps, PyObject *__pyx_v_dense_output, PyObject *__pyx_v_max_step) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *__pyx_cur_scope;
PyObject *__pyx_v_rhs0 = 0;
PyObject *__pyx_v_time_points = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_y = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_7_integrate(__pyx_ptype_6pyross_9inference___pyx_scope_struct_7_integrate, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 3965, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_rhs0);
__Pyx_XDECREF(__pyx_v_time_points);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_y);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate {
PyObject_HEAD
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
};
+3966: dense_output=False, max_step=100000):
values[4] = ((PyObject *)Py_False);
values[5] = ((PyObject *)__pyx_int_100000);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 4, 6, 1); __PYX_ERR(0, 3965, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 4, 6, 2); __PYX_ERR(0, 3965, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 4, 6, 3); __PYX_ERR(0, 3965, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dense_output);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_step);
if (value) { values[5] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) __PYX_ERR(0, 3965, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3965, __pyx_L3_error)
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3965, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3965, __pyx_L3_error)
__pyx_v_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3965, __pyx_L3_error)
__pyx_v_dense_output = values[4];
__pyx_v_max_step = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("integrate", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3965, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_152integrate(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps, __pyx_v_dense_output, __pyx_v_max_step);
3967: """An light weight integrate method similar to `simulate` in pyross.deterministic
3968:
3969: Parameters
3970: ----------
3971: x0: np.array
3972: Initial state of the given model
3973: t1: float
3974: Initial time of integrator
3975: t2: float
3976: Final time of integrator
3977: steps: int
3978: Number of time steps for numerical integrator evaluation.
3979: max_step: int, optional
3980: The maximum allowed step size of the integrator.
3981:
3982: Returns
3983: -------
3984: sol: np.array
3985: The state of the system evaulated at the time point specified. Only used if det_method is set to 'solve_ivp'.
3986: """
3987:
+3988: def rhs0(double t, double [:] xt):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_9integrate_1rhs0 = {"rhs0", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
double __pyx_v_t;
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs0 (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_xt,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xt)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("rhs0", 1, 2, 2, 1); __PYX_ERR(0, 3988, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rhs0") < 0)) __PYX_ERR(0, 3988, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3988, __pyx_L3_error)
__pyx_v_xt = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_xt.memview)) __PYX_ERR(0, 3988, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("rhs0", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3988, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate.rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_9integrate_rhs0(__pyx_self, __pyx_v_t, __pyx_v_xt);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_9integrate_rhs0(PyObject *__pyx_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_xt) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs0", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_integrate *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate.rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_t, __pyx_n_s_xt); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 3988, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__41);
__Pyx_GIVEREF(__pyx_tuple__41);
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6pyross_9inference_8SIR_type_9integrate_1rhs0, 0, __pyx_n_s_integrate_locals_rhs0, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3988, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_rhs0 = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_rhs0_2, 3988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 3988, __pyx_L1_error)
+3989: self.det_model.set_contactMatrix(t, self.contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3989, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_contactMatrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3989, __pyx_L1_error) }
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_cur_scope->__pyx_v_self->contactMatrix};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_cur_scope->__pyx_v_self->contactMatrix};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else
#endif
{
__pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->contactMatrix);
PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_self->contactMatrix);
__pyx_t_2 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3989, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3990: self.det_model.rhs(xt, t)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3990, __pyx_L1_error) }
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_rhs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_xt, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_2};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_2};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else
#endif
{
__pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_2);
__pyx_t_3 = 0;
__pyx_t_2 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3990, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3991: self.integrator_step_count += 1
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3991, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3991, __pyx_L1_error) }
__pyx_cur_scope->__pyx_v_self->integrator_step_count = (__pyx_cur_scope->__pyx_v_self->integrator_step_count + 1);
+3992: if self.max_steps_det != 0 and self.integrator_step_count > self.max_steps_det:
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3992, __pyx_L1_error) }
__pyx_t_9 = ((__pyx_cur_scope->__pyx_v_self->max_steps_det != 0) != 0);
if (__pyx_t_9) {
} else {
__pyx_t_8 = __pyx_t_9;
goto __pyx_L4_bool_binop_done;
}
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3992, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3992, __pyx_L1_error) }
__pyx_t_9 = ((__pyx_cur_scope->__pyx_v_self->integrator_step_count > __pyx_cur_scope->__pyx_v_self->max_steps_det) != 0);
__pyx_t_8 = __pyx_t_9;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_8)) {
/* … */
}
+3993: raise MaxIntegratorStepsException()
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_MaxIntegratorStepsException); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 3993, __pyx_L1_error)
+3994: return self.det_model.dxdt
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3994, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_det_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dxdt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
3995:
+3996: x0 = np.multiply(x0, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 3996, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1); __pyx_v_x0 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+3997: time_points = np.linspace(t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_6, __pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_time_points = __pyx_t_1; __pyx_t_1 = 0;
+3998: self.integrator_step_count = 0
__pyx_cur_scope->__pyx_v_self->integrator_step_count = 0;
+3999: res = solve_ivp(rhs0, [t1,t2], x0, method=self.det_method,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_rhs0); __Pyx_GIVEREF(__pyx_v_rhs0); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_rhs0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_9); __pyx_t_2 = 0; __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_method, __pyx_cur_scope->__pyx_v_self->det_method) < 0) __PYX_ERR(0, 3999, __pyx_L1_error) /* … */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0;
+4000: t_eval=time_points, dense_output=dense_output,
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_t_eval, __pyx_v_time_points) < 0) __PYX_ERR(0, 3999, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dense_output, __pyx_v_dense_output) < 0) __PYX_ERR(0, 3999, __pyx_L1_error)
+4001: max_step=max_step, rtol=self.rtol_det)
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_max_step, __pyx_v_max_step) < 0) __PYX_ERR(0, 3999, __pyx_L1_error) __pyx_t_2 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->rtol_det); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_rtol, __pyx_t_2) < 0) __PYX_ERR(0, 3999, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4002: y = np.divide(res.y.T, self.Omega)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_divide); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_T); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Omega); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_9}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_9}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_y = __pyx_t_2; __pyx_t_2 = 0;
4003:
+4004: if dense_output:
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_dense_output); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 4004, __pyx_L1_error) if (__pyx_t_10) { /* … */ }
+4005: return y, res.sol
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_sol); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_y); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
4006: else:
+4007: return y
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_y);
__pyx_r = __pyx_v_y;
goto __pyx_L0;
}
4008:
4009:
4010: @cython.wraparound(False)
4011: @cython.boundscheck(False)
4012: @cython.cdivision(True)
4013: @cython.nonecheck(False)
+4014: cdef class SIR(SIR_type):
struct __pyx_obj_6pyross_9inference_SIR {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
struct __pyx_obj_6pyross_13deterministic_SIR *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SIR {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SIR *__pyx_vtabptr_6pyross_9inference_SIR;
4015: """
4016: Susceptible, Infected, Removed (SIR)
4017:
4018: * Ia: asymptomatic
4019: * Is: symptomatic
4020:
4021: To initialise the SIR class,
4022:
4023: Parameters
4024: ----------
4025: parameters: dict
4026: Contains the following keys:
4027:
4028: alpha: float
4029: Ratio of asymptomatic carriers
4030: beta: float
4031: Infection rate upon contact
4032: gIa: float
4033: Recovery rate for asymptomatic
4034: gIs: float
4035: Recovery rate for symptomatic
4036: fsa: float
4037: Fraction by which symptomatic individuals do not self-isolate.
4038: M: int
4039: Number of age groups
4040: fi: float numpy.array
4041: Number of people in each age group divided by Omega.
4042: Omega: float, optional
4043: System size parameter, e.g. total population. Default to 1.
4044: steps: int, optional
4045: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4046: For robustness, set steps to be large, lyapunov_method='LSODA'.
4047: For speed, set steps to be small (~4), lyapunov_method='euler'.
4048: For a combination of the two, choose something in between.
4049: det_method: str, optional
4050: The integration method used for deterministic integration.
4051: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4052: lyapunov_method: str, optional
4053: The integration method used for the integration of the Lyapunov equation for the covariance.
4054: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4055: rtol_det: float, optional
4056: relative tolerance for the deterministic integrator (default 1e-4)
4057: rtol_lyapunov: float, optional
4058: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4059: max_steps_det: int, optional
4060: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0).
4061: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4062: max_steps_lyapunov: int, optional
4063: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4064: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4065:
4066: """
+4067: cdef readonly pyross.deterministic.SIR det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_9det_model___get__(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4068:
+4069: def __init__(self, parameters, M, fi, Omega=1, steps=4, det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-4, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_3SIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_3SIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)__pyx_int_1);
values[4] = ((PyObject *)__pyx_int_4);
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_float_1eneg_4);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 1); __PYX_ERR(0, 4069, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 2); __PYX_ERR(0, 4069, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 4069, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_Omega = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
__pyx_v_rtol_det = values[7];
__pyx_v_rtol_lyapunov = values[8];
__pyx_v_max_steps_det = values[9];
__pyx_v_max_steps_lyapunov = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4069, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3SIR___init__(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_3SIR___init__(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4070: self.param_keys = ['alpha', 'beta', 'gIa', 'gIs', 'fsa']
__pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_alpha); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_beta); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_gIa); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_gIs); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4071: super().__init__(parameters, 3, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_3, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_3, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(12+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_3); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_4, __pyx_v_max_steps_lyapunov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4072: self.class_index_dict = {'S':0, 'Ia':1, 'Is':2}
__pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 4072, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_1) < 0) __PYX_ERR(0, 4072, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_2) < 0) __PYX_ERR(0, 4072, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4073: self.set_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4074:
+4075: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_3set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_3set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_2set_det_model(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_2set_det_model(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4076: self.det_model = pyross.deterministic.SIR(parameters, self.M, self.fi*self.Omega)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SIR), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SIR *)__pyx_t_3); __pyx_t_3 = 0;
4077:
+4078: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_4infection_indices(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_4infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4079: return [1, 2]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
4080:
+4081: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_7make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_7make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_6make_params_dict(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_6make_params_dict(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4082: parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIa':self.gIa, 'gIs':self.gIs, 'fsa':self.fsa}
__pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 4082, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 4082, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 4082, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 4082, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 4082, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4083: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
4084:
+4085: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+4086: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
4087: cdef:
4088: double [:] s, Ia, Is
+4089: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4090: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4090, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4091: Ia = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4091, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4092: Is = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4092, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4093: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_6 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4093, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+4094: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4095: self.fill_lambdas(Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4096: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4096, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4097: self.noise_correlation(s, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4098: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4098, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4099: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4100:
+4101: cdef fill_lambdas(self, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_fill_lambdas(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SIR.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4102: cdef:
+4103: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 4103, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+4104: double [:] fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4104, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4104, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4105: double [:] fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4105, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4106: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+4107: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+4108: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+4109: l[m] += beta[m]*CM[m,n]*(Ia[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_16 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_15 * __pyx_v_fi.strides[0]) ))));
}
}
4110:
+4111: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_jacobian(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_XDECREF(__pyx_t_25);
__Pyx_AddTraceback("pyross.inference.SIR.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4112: cdef:
+4113: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+4114: double [:] gIa=self.gIa, gIs=self.gIs, fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4114, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4114, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4114, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4114, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4115: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4115, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4115, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4116: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4116, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4117: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4117, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+4118: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+4119: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+4120: J[1, m, 0, m] = alpha[m]*l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 1;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_11 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_8 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_12 * __pyx_v_l.strides[0]) ))));
+4121: J[2, m, 0, m] = balpha[m]*l[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = 0;
__pyx_t_11 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_11 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_12 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+4122: for n in range(M):
__pyx_t_14 = __pyx_v_M;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_n = __pyx_t_16;
+4123: J[0, m, 1, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_13 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_12 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_9 * __pyx_v_fi.strides[0]) ))));
+4124: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_n;
__pyx_t_8 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_18 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_20 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_9 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_10 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_12 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_8 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_19 * __pyx_v_fi.strides[0]) ))));
+4125: J[1, m, 1, n] = alpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_19 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_20 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_17 = 1;
__pyx_t_18 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_19 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_12 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_9 * __pyx_v_fi.strides[0]) ))));
+4126: J[1, m, 2, n] = alpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_18 = __pyx_v_n;
__pyx_t_17 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_20 = 2;
__pyx_t_21 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_21 * __pyx_v_J.strides[3]) )) = ((((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_9 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_10 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_11 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_12 * __pyx_v_CM.strides[0]) ) + __pyx_t_8 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_19 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_18 * __pyx_v_fi.strides[0]) ))));
+4127: J[2, m, 1, n] = balpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = 2;
__pyx_t_21 = __pyx_v_m;
__pyx_t_20 = 1;
__pyx_t_13 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_21 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_18 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_19 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_8 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_12 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_10 * __pyx_v_fi.strides[0]) ))));
+4128: J[2, m, 2, n] = balpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_19 = __pyx_v_n;
__pyx_t_18 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_20 = 2;
__pyx_t_21 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_17 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_21 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = ((((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_10 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_12 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_19 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_18 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_13 * __pyx_v_fi.strides[0]) ))));
}
+4129: J[1, m, 1, m] -= gIa[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_m;
__pyx_t_8 = 1;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_19 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_13 * __pyx_v_gIa.strides[0]) )));
+4130: J[2, m, 2, m] -= gIs[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_8 = __pyx_v_m;
__pyx_t_19 = 2;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_19 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_13 * __pyx_v_gIs.strides[0]) )));
}
+4131: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_22 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __pyx_t_24 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_t_24); __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_24 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_22))) { __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_22); if (likely(__pyx_t_24)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22); __Pyx_INCREF(__pyx_t_24); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_22, function); } } __pyx_t_3 = (__pyx_t_24) ? __Pyx_PyObject_Call2Args(__pyx_t_22, __pyx_t_24, __pyx_t_25) : __Pyx_PyObject_CallOneArg(__pyx_t_22, __pyx_t_25); __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4131, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
4132:
+4133: cdef noise_correlation(self, double [:] s, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_noise_correlation(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("pyross.inference.SIR.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4134: cdef:
+4135: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4136: double [:] gIa=self.gIa, gIs=self.gIs
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4136, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4136, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4137: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4137, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4137, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4138: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4138, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4139: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+4140: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+4141: B[0, m, 1, m] = - alpha[m]*l[m]*s[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_11 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_9 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_8 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) ))));
+4142: B[1, m, 1, m] = alpha[m]*l[m]*s[m] + gIa[m]*Ia[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_14 = 1;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_10 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_12 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_13 * __pyx_v_gIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_9 * __pyx_v_Ia.strides[0]) )))));
+4143: B[0, m, 2, m] = - balpha[m]*l[m]*s[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = 0;
__pyx_t_12 = __pyx_v_m;
__pyx_t_15 = 2;
__pyx_t_14 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_7 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_15 * __pyx_v_B.strides[2]) ) + __pyx_t_14 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_9 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+4144: B[2, m, 2, m] = balpha[m]*l[m]*s[m] + gIs[m]*Is[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_7 = __pyx_v_m;
__pyx_t_11 = 2;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_7 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_10 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_8 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_9 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_14 * __pyx_v_gIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))));
}
+4145: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_18); __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_18 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) { __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_16); if (likely(__pyx_t_18)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_18); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_16, function); } } __pyx_t_3 = (__pyx_t_18) ? __Pyx_PyObject_Call2Args(__pyx_t_16, __pyx_t_18, __pyx_t_19) : __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_19); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_16, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_19 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_16); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (!(likely(((__pyx_t_19) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_19, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4145, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_19); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_19); __pyx_t_19 = 0;
4146:
4147: @cython.wraparound(False)
4148: @cython.boundscheck(False)
4149: @cython.cdivision(True)
4150: @cython.nonecheck(False)
+4151: cdef class SI2R(SIR_type):
struct __pyx_obj_6pyross_9inference_SI2R {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gIp;
struct __pyx_obj_6pyross_13deterministic_SI2R *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SI2R {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SI2R *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SI2R *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SI2R *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SI2R *__pyx_vtabptr_6pyross_9inference_SI2R;
4152: """
4153: Susceptible, Infected, Removed (SI2R)
4154:
4155: * Ip: presymptomatic
4156: * Ia: asymptomatic
4157: * Is: symptomatic
4158:
4159: To initialise the SIR class,
4160:
4161: Parameters
4162: ----------
4163: parameters: dict
4164: Contains the following keys:
4165:
4166: alpha: float
4167: Ratio of asymptomatic carriers
4168: beta: float
4169: Infection rate upon contact
4170: gIp: float
4171: Recovery rate for presymptomatic
4172: gIa: float
4173: Recovery rate for asymptomatic
4174: gIs: float
4175: Recovery rate for symptomatic
4176: fsa: float
4177: Fraction by which symptomatic individuals do not self-isolate.
4178: M: int
4179: Number of age groups
4180: fi: float numpy.array
4181: Number of people in each age group divided by Omega.
4182: Omega: float, optional
4183: System size parameter, e.g. total population. Default to 1.
4184: steps: int, optional
4185: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4186: For robustness, set steps to be large, lyapunov_method='LSODA'.
4187: For speed, set steps to be small (~4), lyapunov_method='euler'.
4188: For a combination of the two, choose something in between.
4189: det_method: str, optional
4190: The integration method used for deterministic integration.
4191: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4192: lyapunov_method: str, optional
4193: The integration method used for the integration of the Lyapunov equation for the covariance.
4194: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4195: rtol_det: float, optional
4196: relative tolerance for the deterministic integrator (default 1e-4)
4197: rtol_lyapunov: float, optional
4198: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4199: max_steps_det: int, optional
4200: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0).
4201: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4202: max_steps_lyapunov: int, optional
4203: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4204: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4205:
4206: """
4207: #cdef readonly pyross.deterministic.SI2R det_model
4208: cdef:
+4209: readonly np.ndarray gIp
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_3gIp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_3gIp_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_3gIp___get__(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_3gIp___get__(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gIp));
__pyx_r = ((PyObject *)__pyx_v_self->gIp);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4210: readonly pyross.deterministic.SI2R det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_9det_model___get__(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4211:
4212:
+4213: def __init__(self, parameters, M, fi, Omega=1, steps=4, det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-4, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_4SI2R_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_4SI2R_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)__pyx_int_1);
values[4] = ((PyObject *)__pyx_int_4);
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_float_1eneg_4);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 1); __PYX_ERR(0, 4213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 2); __PYX_ERR(0, 4213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 4213, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_Omega = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
__pyx_v_rtol_det = values[7];
__pyx_v_rtol_lyapunov = values[8];
__pyx_v_max_steps_det = values[9];
__pyx_v_max_steps_lyapunov = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4213, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SI2R.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R___init__(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_4SI2R___init__(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SI2R.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4214: #self.param_keys = ['alpha', 'beta', 'gIa', 'gIs', 'fsa']
4215: #super().__init__(parameters, 3, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
4216: #self.class_index_dict = {'S':0, 'Ia':1, 'Is':2}
+4217: self.param_keys = ['alpha', 'beta', 'gIp', 'gIa', 'gIs', 'fsa']
__pyx_t_1 = PyList_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_alpha); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_beta); __Pyx_INCREF(__pyx_n_u_gIp); __Pyx_GIVEREF(__pyx_n_u_gIp); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_gIp); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_gIa); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_gIs); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4218: super().__init__(parameters, 4, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(12+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_4, __pyx_v_max_steps_lyapunov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4219: self.class_index_dict = {'S':0, 'Ip':1, 'Ia':2, 'Is':3}
__pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 4219, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ip, __pyx_int_1) < 0) __PYX_ERR(0, 4219, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_2) < 0) __PYX_ERR(0, 4219, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_3) < 0) __PYX_ERR(0, 4219, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4220: self.set_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4221:
+4222: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_3set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_3set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_2set_det_model(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_2set_det_model(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SI2R.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4223: #self.det_model = pyross.deterministic.SIR(parameters, self.M, self.fi*self.Omega)
+4224: self.det_model = pyross.deterministic.SI2R(parameters, self.M, self.fi*self.Omega)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SI2R), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SI2R *)__pyx_t_3); __pyx_t_3 = 0;
4225:
+4226: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_4infection_indices(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_4infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SI2R.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4227: #return [1, 2]
+4228: return [1, 2, 3]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_3); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
4229:
4230: # Added from SEIR
+4231: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_7set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_7set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_6set_params(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_6set_params(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SI2R.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4232: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SI2R)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4233: self.gIp = pyross.utils.age_dep_rates(parameters['gIp'], self.M, 'gIp')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gIp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gIp}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gIp}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gIp); __Pyx_GIVEREF(__pyx_n_u_gIp); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gIp); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4233, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gIp); __Pyx_DECREF(((PyObject *)__pyx_v_self->gIp)); __pyx_v_self->gIp = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
4234:
+4235: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_9make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SI2R_9make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SI2R_8make_params_dict(((struct __pyx_obj_6pyross_9inference_SI2R *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SI2R_8make_params_dict(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SI2R.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4236: #parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIa':self.gIa, 'gIs':self.gIs, 'fsa':self.fsa}
+4237: parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIp':self.gIp,
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIp, ((PyObject *)__pyx_v_self->gIp)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error)
+4238: 'gIa':self.gIa, 'gIs':self.gIs, 'fsa':self.fsa}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 4237, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4239: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
4240:
+4241: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_4SI2R_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_4SI2R_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SI2R.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ip, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_4SI2R_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+4242: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ip = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
4243: cdef:
4244: #double [:] s, Ia, Is
4245: double [:] s, Ip, Ia, Is
+4246: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4247: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4247, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
4248: #Ia = x[M:2*M]
4249: #Is = x[2*M:3*M]
+4250: Ip = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4250, __pyx_L1_error)
}
__pyx_v_Ip = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4251: Ia = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4251, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4252: Is = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4252, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4253: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_6 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4253, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+4254: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4254, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
4255: #self.fill_lambdas(Ia, Is, l)
+4256: self.fill_lambdas(Ip, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SI2R *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ip, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4257: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4257, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
4258: #self.noise_correlation(s, Ia, Is, l)
+4259: self.noise_correlation(s, Ip, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SI2R *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_Ip, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4260: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4260, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4261: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SI2R *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4262:
4263: #cdef fill_lambdas(self, double [:] Ia, double [:] Is, double [:] l):
+4264: cdef fill_lambdas(self, double [:] Ip, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SI2R_fill_lambdas(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, __Pyx_memviewslice __pyx_v_Ip, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SI2R.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4265: cdef:
+4266: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 4266, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+4267: double [:] fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4267, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4267, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4268: double [:] fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4268, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4269: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+4270: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+4271: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
4272: #l[m] += beta[m]*CM[m,n]*(Ia[n]+fsa[n]*Is[n])/fi[n]
+4273: l[m] += beta[m]*CM[m,n]*(Ip[n]+Ia[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_17 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (((*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_12 * __pyx_v_Ip.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_13 * __pyx_v_Ia.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_14 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
}
}
4274:
+4275: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SI2R_jacobian(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gIp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_AddTraceback("pyross.inference.SI2R.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4276: cdef:
+4277: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
4278: #double [:] gIa=self.gIa, gIs=self.gIs, fsa=self.fsa, beta=self.beta
+4279: double [:] gIp=self.gIp, gIa=self.gIa, gIs=self.gIs, fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gIp), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4279, __pyx_L1_error) __pyx_v_gIp = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4279, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4279, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4279, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4279, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4280: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4280, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4280, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4280, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4281: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4281, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4282: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4282, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
4283: #for m in range(M):
4284: # J[0, m, 0, m] = -l[m]
4285: # J[1, m, 0, m] = alpha[m]*l[m]
4286: # J[2, m, 0, m] = balpha[m]*l[m]
4287: # for n in range(M):
4288: # J[0, m, 1, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
4289: # J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
4290: # J[1, m, 1, n] = alpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
4291: # J[1, m, 2, n] = alpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
4292: # J[2, m, 1, n] = balpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
4293: # J[2, m, 2, n] = balpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
4294: # J[1, m, 1, m] -= gIa[m]
4295: # J[2, m, 2, m] -= gIs[m]
+4296: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+4297: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+4298: J[1, m, 0, m] = l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 0;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )));
+4299: for n in range(M):
__pyx_t_13 = __pyx_v_M;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_n = __pyx_t_15;
+4300: J[0, m, 1, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_16 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_16 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_12 * __pyx_v_fi.strides[0]) ))));
+4301: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_n;
__pyx_t_8 = __pyx_v_n;
__pyx_t_19 = 0;
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = 2;
__pyx_t_16 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_11 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_9 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_8 * __pyx_v_fi.strides[0]) ))));
+4302: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = 0;
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = 3;
__pyx_t_20 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_19 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_12 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
+4303: J[1, m, 1, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_16 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_8 = 1;
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = 1;
__pyx_t_18 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_8 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_19 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_16 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_12 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_9 * __pyx_v_fi.strides[0]) ))));
+4304: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = 2;
__pyx_t_8 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_19 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_8 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_9 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_10 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_12 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
+4305: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_16 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_8 = __pyx_v_n;
__pyx_t_20 = 1;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 3;
__pyx_t_17 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_19 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_16 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_12 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_11 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_9 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_8 * __pyx_v_fi.strides[0]) ))));
}
+4306: J[1, m, 1, m] -= gIp[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 1;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_8 * __pyx_v_gIp.strides[0]) )));
+4307: J[2, m, 0, m] = 0
__pyx_t_8 = 2;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_8 * __pyx_v_J.strides[0]) ) + __pyx_t_12 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = 0.0;
+4308: J[2, m, 1, m] = alpha[m]*gIp[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_10 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_11 * __pyx_v_gIp.strides[0]) ))));
+4309: J[2, m, 2, m] = -gIa[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 2;
__pyx_t_16 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_8 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_10 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_8 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_11 * __pyx_v_gIa.strides[0]) ))));
+4310: J[2, m, 3, m] = 0
__pyx_t_11 = 2;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 3;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_11 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) = 0.0;
+4311: J[3, m, 0, m] = 0
__pyx_t_16 = 3;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = 0;
__pyx_t_11 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_16 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_11 * __pyx_v_J.strides[3]) )) = 0.0;
+4312: J[3, m, 1, m] = balpha[m]*gIp[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 3;
__pyx_t_16 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_11 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_8 * __pyx_v_gIp.strides[0]) ))));
+4313: J[3, m, 2, m] = 0
__pyx_t_8 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_8 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_12 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = 0.0;
+4314: J[3, m, 3, m] = -gIs[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_10 * __pyx_v_gIs.strides[0]) ))));
}
+4315: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_22 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __pyx_t_24 = PyTuple_New(2); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_t_23); __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_23 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_21))) { __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21); if (likely(__pyx_t_23)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21); __Pyx_INCREF(__pyx_t_23); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_21, function); } } __pyx_t_3 = (__pyx_t_23) ? __Pyx_PyObject_Call2Args(__pyx_t_21, __pyx_t_23, __pyx_t_24) : __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_24); __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4315, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
4316:
4317: #cdef noise_correlation(self, double [:] s, double [:] Ia, double [:] Is, double [:] l):
+4318: cdef noise_correlation(self, double [:] s, double [:] Ip, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SI2R_noise_correlation(struct __pyx_obj_6pyross_9inference_SI2R *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_Ip, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_gIp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("pyross.inference.SI2R.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4319: cdef:
+4320: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
4321: #double [:] gIa=self.gIa, gIs=self.gI
+4322: double [:] gIp=self.gIp, gIa=self.gIa, gIs=self.gIs
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gIp), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4322, __pyx_L1_error) __pyx_v_gIp = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4322, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4322, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4323: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4323, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4323, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4324: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4324, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
4325: #for m in range(M): # only fill in the upper triangular form
4326: # B[0, m, 0, m] = l[m]*s[m]
4327: # B[0, m, 1, m] = - alpha[m]*l[m]*s[m]
4328: # B[1, m, 1, m] = alpha[m]*l[m]*s[m] + gIa[m]*Ia[m]
4329: # B[0, m, 2, m] = - balpha[m]*l[m]*s[m]
4330: # B[2, m, 2, m] = balpha[m]*l[m]*s[m] + gIs[m]*Is[m]
+4331: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+4332: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+4333: B[0, m, 1, m] = -l[m]*s[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_12 = 0;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_9 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_7 * __pyx_v_s.strides[0]) ))));
+4334: B[0, m, 2, m] = 0
__pyx_t_7 = 0;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_7 * __pyx_v_B.strides[0]) ) + __pyx_t_8 * __pyx_v_B.strides[1]) ) + __pyx_t_9 * __pyx_v_B.strides[2]) ) + __pyx_t_10 * __pyx_v_B.strides[3]) )) = 0.0;
+4335: B[0, m, 3, m] = 0
__pyx_t_10 = 0;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_7 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_10 * __pyx_v_B.strides[0]) ) + __pyx_t_9 * __pyx_v_B.strides[1]) ) + __pyx_t_8 * __pyx_v_B.strides[2]) ) + __pyx_t_7 * __pyx_v_B.strides[3]) )) = 0.0;
+4336: B[1, m, 1, m] = l[m]*s[m] + gIp[m]*Ip[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 1;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = 1;
__pyx_t_14 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_11 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_14 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_9 * __pyx_v_gIp.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_10 * __pyx_v_Ip.strides[0]) )))));
+4337: B[1, m, 2, m] = - alpha[m]*gIp[m]*Ip[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = 1;
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_7 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_10 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_9 * __pyx_v_gIp.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_8 * __pyx_v_Ip.strides[0]) ))));
+4338: B[1, m, 3, m] = - balpha[m]*gIp[m]*Ip[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = 3;
__pyx_t_7 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_13 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_7 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_8 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_9 * __pyx_v_gIp.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_10 * __pyx_v_Ip.strides[0]) ))));
+4339: B[2, m, 2, m] = alpha[m]*gIp[m]*Ip[m] + gIa[m]*Ia[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 2;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_13 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_10 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_9 * __pyx_v_gIp.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_8 * __pyx_v_Ip.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_7 * __pyx_v_gIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_14 * __pyx_v_Ia.strides[0]) )))));
+4340: B[2, m, 3, m] = 0
__pyx_t_14 = 2;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_14 * __pyx_v_B.strides[0]) ) + __pyx_t_7 * __pyx_v_B.strides[1]) ) + __pyx_t_8 * __pyx_v_B.strides[2]) ) + __pyx_t_9 * __pyx_v_B.strides[3]) )) = 0.0;
+4341: B[3, m, 3, m] = balpha[m]*gIp[m]*Ip[m] + gIs[m]*Is[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_15 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_12 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_9 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gIp.data + __pyx_t_8 * __pyx_v_gIp.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ip.data + __pyx_t_7 * __pyx_v_Ip.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_14 * __pyx_v_gIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_10 * __pyx_v_Is.strides[0]) )))));
}
+4342: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_18); __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_18 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) { __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_16); if (likely(__pyx_t_18)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_18); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_16, function); } } __pyx_t_3 = (__pyx_t_18) ? __Pyx_PyObject_Call2Args(__pyx_t_16, __pyx_t_18, __pyx_t_19) : __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_19); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_16, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_19 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_16); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (!(likely(((__pyx_t_19) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_19, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4342, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_19); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_19); __pyx_t_19 = 0;
4343:
4344:
4345: @cython.wraparound(False)
4346: @cython.boundscheck(False)
4347: @cython.cdivision(True)
4348: @cython.nonecheck(False)
+4349: cdef class SEIR(SIR_type):
struct __pyx_obj_6pyross_9inference_SEIR {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
struct __pyx_obj_6pyross_13deterministic_SEIR *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEIR {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEIR *__pyx_vtabptr_6pyross_9inference_SEIR;
4350: """
4351: Susceptible, Exposed, Infected, Removed (SEIR)
4352:
4353: * Ia: asymptomatic
4354: * Is: symptomatic
4355:
4356: To initialise the SEIR class,
4357:
4358: Parameters
4359: ----------
4360: parameters: dict
4361: Contains the following keys:
4362:
4363: alpha: float or np.array(M)
4364: Fraction of infected who are asymptomatic.
4365: beta: float
4366: Rate of spread of infection.
4367: gIa: float
4368: Rate of removal from asymptomatic individuals.
4369: gIs: float
4370: Rate of removal from symptomatic individuals.
4371: fsa: float
4372: Fraction by which symptomatic individuals do not self-isolate.
4373: gE: float
4374: rate of removal from exposed individuals.
4375: M: int
4376: Number of age groups
4377: fi: float numpy.array
4378: Number of people in each compartment divided by Omega
4379: Omega: float, optional
4380: System size, e.g. total population. Default is 1.
4381: steps: int, optional
4382: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4383: For robustness, set steps to be large, lyapunov_method='LSODA'.
4384: For speed, set steps to be small (~4), lyapunov_method='euler'.
4385: For a combination of the two, choose something in between.
4386: det_method: str, optional
4387: The integration method used for deterministic integration.
4388: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4389: lyapunov_method: str, optional
4390: The integration method used for the integration of the Lyapunov equation for the covariance.
4391: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4392: rtol_det: float, optional
4393: relative tolerance for the deterministic integrator (default 1e-3)
4394: rtol_lyapunov: float, optional
4395: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4396: max_steps_det: int, optional
4397: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
4398: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4399: max_steps_lyapunov: int, optional
4400: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4401: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4402: """
4403:
4404: cdef:
+4405: readonly np.ndarray gE
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_2gE___get__(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4406: readonly pyross.deterministic.SEIR det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_9det_model___get__(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4407:
+4408: def __init__(self, parameters, M, fi, Omega=1, steps=4, det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_4SEIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_4SEIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)__pyx_int_1);
values[4] = ((PyObject *)__pyx_int_4);
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_float_1eneg_3);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 1); __PYX_ERR(0, 4408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 2); __PYX_ERR(0, 4408, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 4408, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_Omega = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
__pyx_v_rtol_det = values[7];
__pyx_v_rtol_lyapunov = values[8];
__pyx_v_max_steps_det = values[9];
__pyx_v_max_steps_lyapunov = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4408, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR___init__(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_4SEIR___init__(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4409: self.param_keys = ['alpha', 'beta', 'gE', 'gIa', 'gIs', 'fsa']
__pyx_t_1 = PyList_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_alpha); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_beta); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_gE); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_gIa); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_gIs); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4410: super().__init__(parameters, 4, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(12+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_4, __pyx_v_max_steps_lyapunov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4411: self.class_index_dict = {'S':0, 'E':1, 'Ia':2, 'Is':3}
__pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 4411, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 4411, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_2) < 0) __PYX_ERR(0, 4411, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_3) < 0) __PYX_ERR(0, 4411, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4412: self.set_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4413:
+4414: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEIR.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4415: return [1, 2, 3]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_3); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
4416:
+4417: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_4set_params(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_4set_params(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEIR.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4418: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4419: self.gE = pyross.utils.age_dep_rates(parameters['gE'], self.M, 'gE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4419, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gE); __Pyx_DECREF(((PyObject *)__pyx_v_self->gE)); __pyx_v_self->gE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
4420:
+4421: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_7set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_7set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_6set_det_model(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_6set_det_model(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEIR.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4422: self.det_model = pyross.deterministic.SEIR(parameters, self.M, self.fi*self.Omega)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEIR), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SEIR *)__pyx_t_3); __pyx_t_3 = 0;
4423:
+4424: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_8make_params_dict(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_8make_params_dict(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4425: parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIa':self.gIa,
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error)
+4426: 'gIs':self.gIs, 'gE':self.gE, 'fsa':self.fsa}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 4425, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4427: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
4428:
+4429: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEIR.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+4430: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
4431: cdef:
4432: double [:] s, e, Ia, Is
+4433: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4434: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4434, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4435: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4435, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4436: Ia = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4436, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4437: Is = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4437, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4438: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_6 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4438, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+4439: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4439, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4440: self.fill_lambdas(Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4441: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4441, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4442: self.noise_correlation(s, e, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4443: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4443, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4444: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4445:
+4446: cdef fill_lambdas(self, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEIR.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4447: cdef:
+4448: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 4448, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+4449: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4449, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4449, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4449, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4450: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+4451: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+4452: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+4453: l[m] += beta[m]*CM[m,n]*(Ia[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_16 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_15 * __pyx_v_fi.strides[0]) ))));
}
}
4454:
+4455: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_jacobian(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_AddTraceback("pyross.inference.SEIR.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4456: cdef:
+4457: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+4458: double [:] gIa=self.gIa, gIs=self.gIs, gE=self.gE, fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4458, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4459: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4459, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4459, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4459, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4460: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4460, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4461: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4461, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+4462: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+4463: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+4464: J[1, m, 0, m] = l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 0;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )));
+4465: J[1, m, 1, m] = - gE[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 1;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_8 * __pyx_v_gE.strides[0]) ))));
+4466: J[2, m, 1, m] = alpha[m]*gE[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 2;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_11 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_8 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_12 * __pyx_v_gE.strides[0]) ))));
+4467: J[2, m, 2, m] = - gIa[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = 2;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_8 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_12 * __pyx_v_gIa.strides[0]) ))));
+4468: J[3, m, 1, m] = balpha[m]*gE[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = 3;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = 1;
__pyx_t_11 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_11 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_12 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_10 * __pyx_v_gE.strides[0]) ))));
+4469: J[3, m, 3, m] = - gIs[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_10 * __pyx_v_gIs.strides[0]) ))));
+4470: for n in range(M):
__pyx_t_14 = __pyx_v_M;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_n = __pyx_t_16;
+4471: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_10 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_9 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_19 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_10 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_13 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_12 * __pyx_v_fi.strides[0]) ))));
+4472: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = __pyx_v_n;
__pyx_t_10 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_18 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_9 = 3;
__pyx_t_20 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_11 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_13 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_10 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_19 * __pyx_v_fi.strides[0]) ))));
+4473: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_19 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_n;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = 1;
__pyx_t_20 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_17 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_19 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_10 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_13 * __pyx_v_CM.strides[0]) ) + __pyx_t_8 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_11 * __pyx_v_fi.strides[0]) ))));
+4474: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_11 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_17 = __pyx_v_n;
__pyx_t_9 = 1;
__pyx_t_20 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_18 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_12 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_8 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_13 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_19 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_17 * __pyx_v_fi.strides[0]) ))));
}
}
+4475: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_22 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __pyx_t_24 = PyTuple_New(2); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_t_23); __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_23 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_21))) { __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21); if (likely(__pyx_t_23)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21); __Pyx_INCREF(__pyx_t_23); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_21, function); } } __pyx_t_3 = (__pyx_t_23) ? __Pyx_PyObject_Call2Args(__pyx_t_21, __pyx_t_23, __pyx_t_24) : __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_24); __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4475, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
4476:
+4477: cdef noise_correlation(self, double [:] s, double [:] e, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_noise_correlation(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("pyross.inference.SEIR.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4478: cdef:
+4479: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4480: double [:] gIa=self.gIa, gIs=self.gIs, gE=self.gE
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4480, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4480, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4480, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4481: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4481, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4481, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4482: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4482, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4483: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+4484: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+4485: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_12 = 0;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_9 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_7 * __pyx_v_s.strides[0]) ))));
+4486: B[1, m, 1, m] = l[m]*s[m] + gE[m]*e[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 1;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = 1;
__pyx_t_14 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_11 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_14 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_10 * __pyx_v_e.strides[0]) )))));
+4487: B[1, m, 2, m] = -alpha[m]*gE[m]*e[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = 1;
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_7 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_10 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_8 * __pyx_v_e.strides[0]) ))));
+4488: B[1, m, 3, m] = -balpha[m]*gE[m]*e[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = 3;
__pyx_t_7 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_13 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_7 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_8 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_10 * __pyx_v_e.strides[0]) ))));
+4489: B[2, m, 2, m] = alpha[m]*gE[m]*e[m]+gIa[m]*Ia[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = 2;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_13 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_10 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_8 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_7 * __pyx_v_gIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_14 * __pyx_v_Ia.strides[0]) )))));
+4490: B[3, m, 3, m] = balpha[m]*gE[m]*e[m]+gIs[m]*Is[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_15 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_12 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_14 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_7 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_8 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_9 * __pyx_v_gIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_10 * __pyx_v_Is.strides[0]) )))));
}
+4491: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_18); __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_18 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) { __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_16); if (likely(__pyx_t_18)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_18); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_16, function); } } __pyx_t_3 = (__pyx_t_18) ? __Pyx_PyObject_Call2Args(__pyx_t_16, __pyx_t_18, __pyx_t_19) : __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_19); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_16, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_19 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_16); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (!(likely(((__pyx_t_19) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_19, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4491, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_19); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_19); __pyx_t_19 = 0;
4492:
4493:
4494: @cython.wraparound(False)
4495: @cython.boundscheck(False)
4496: @cython.cdivision(True)
4497: @cython.nonecheck(False)
+4498: cdef class SEAIRQ(SIR_type):
struct __pyx_obj_6pyross_9inference_SEAIRQ {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
PyArrayObject *gA;
PyArrayObject *tE;
PyArrayObject *tA;
PyArrayObject *tIa;
PyArrayObject *tIs;
struct __pyx_obj_6pyross_13deterministic_SEAIRQ *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *__pyx_vtabptr_6pyross_9inference_SEAIRQ;
4499: """
4500: Susceptible, Exposed, Asymptomatic and infected, Infected, Removed, Quarantined (SEAIRQ)
4501:
4502: * Ia: asymptomatic
4503: * Is: symptomatic
4504: * E: exposed
4505: * A: asymptomatic and infectious
4506: * Q: quarantined
4507:
4508: To initialise the SEAIRQ class,
4509:
4510: Parameters
4511: ----------
4512: parameters: dict
4513: Contains the following keys:
4514:
4515: alpha: float or np.array(M)
4516: Fraction of infected who are asymptomatic.
4517: beta: float
4518: Rate of spread of infection.
4519: gIa: float
4520: Rate of removal from asymptomatic individuals.
4521: gIs: float
4522: Rate of removal from symptomatic individuals.
4523: gE: float
4524: rate of removal from exposed individuals.
4525: gA: float
4526: rate of removal from activated individuals.
4527: fsa: float
4528: Fraction by which symptomatic individuals do not self-isolate.
4529: tE: float
4530: testing rate and contact tracing of exposeds
4531: tA: float
4532: testing rate and contact tracing of activateds
4533: tIa: float
4534: testing rate and contact tracing of asymptomatics
4535: tIs: float
4536: testing rate and contact tracing of symptomatics
4537: M: int
4538: Number of compartments
4539: fi: float numpy.array
4540: Number of people in each compartment divided by Omega.
4541: Omega: float, optional
4542: System size, e.g. total population. Default is 1.
4543: steps: int, optional
4544: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4545: For robustness, set steps to be large, lyapunov_method='LSODA'.
4546: For speed, set steps to be small (~4), lyapunov_method='euler'.
4547: For a combination of the two, choose something in between.
4548: det_method: str, optional
4549: The integration method used for deterministic integration.
4550: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4551: lyapunov_method: str, optional
4552: The integration method used for the integration of the Lyapunov equation for the covariance.
4553: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4554: rtol_det: float, optional
4555: relative tolerance for the deterministic integrator (default 1e-3)
4556: rtol_lyapunov: float, optional
4557: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4558: max_steps_det: int, optional
4559: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
4560: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4561: max_steps_lyapunov: int, optional
4562: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4563: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4564: """
4565:
4566: cdef:
+4567: readonly np.ndarray gE, gA, tE, tA, tIa, tIs
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2gE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2gA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2gA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gA));
__pyx_r = ((PyObject *)__pyx_v_self->gA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2tE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2tE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tE));
__pyx_r = ((PyObject *)__pyx_v_self->tE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2tA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2tA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tA));
__pyx_r = ((PyObject *)__pyx_v_self->tA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_3tIa___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_3tIa___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tIa));
__pyx_r = ((PyObject *)__pyx_v_self->tIa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIs_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_3tIs___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_3tIs___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tIs));
__pyx_r = ((PyObject *)__pyx_v_self->tIs);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4568: readonly pyross.deterministic.SEAIRQ det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_9det_model___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4569:
+4570: def __init__(self, parameters, M, fi, Omega=1, steps=4, det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_6SEAIRQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_6SEAIRQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[3] = ((PyObject *)__pyx_int_1);
values[4] = ((PyObject *)__pyx_int_4);
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_float_1eneg_3);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_int_0);
values[10] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 1); __PYX_ERR(0, 4570, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, 2); __PYX_ERR(0, 4570, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 4570, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_Omega = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
__pyx_v_rtol_det = values[7];
__pyx_v_rtol_lyapunov = values[8];
__pyx_v_max_steps_det = values[9];
__pyx_v_max_steps_lyapunov = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4570, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ___init__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_6SEAIRQ___init__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4571: self.param_keys = ['alpha', 'beta', 'gE', 'gA', \
__pyx_t_1 = PyList_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_alpha); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_beta); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_gE); __Pyx_INCREF(__pyx_n_u_gA); __Pyx_GIVEREF(__pyx_n_u_gA); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_gA); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_gIa); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_gIs); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_fsa); __Pyx_INCREF(__pyx_n_u_tE); __Pyx_GIVEREF(__pyx_n_u_tE); PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_tE); __Pyx_INCREF(__pyx_n_u_tA); __Pyx_GIVEREF(__pyx_n_u_tA); PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_u_tA); __Pyx_INCREF(__pyx_n_u_tIa); __Pyx_GIVEREF(__pyx_n_u_tIa); PyList_SET_ITEM(__pyx_t_1, 9, __pyx_n_u_tIa); __Pyx_INCREF(__pyx_n_u_tIs); __Pyx_GIVEREF(__pyx_n_u_tIs); PyList_SET_ITEM(__pyx_t_1, 10, __pyx_n_u_tIs); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
4572: 'gIa', 'gIs', 'fsa', \
4573: 'tE', 'tA', 'tIa', 'tIs']
+4574: super().__init__(parameters, 6, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(12+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_6); __Pyx_GIVEREF(__pyx_int_6); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_6); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_4, __pyx_v_max_steps_lyapunov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4575: self.class_index_dict = {'S':0, 'E':1, 'A':2, 'Ia':3, 'Is':4, 'Q':5}
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_A, __pyx_int_2) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_3) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_4) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Q, __pyx_int_5) < 0) __PYX_ERR(0, 4575, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4576: self.set_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4577:
+4578: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4579: return [1, 2, 3, 4]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_3); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_int_4); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
4580:
4581:
+4582: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_5set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_5set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_4set_det_model(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_4set_det_model(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4583: self.det_model = pyross.deterministic.SEAIRQ(parameters, self.M, self.fi*self.Omega)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEAIRQ), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SEAIRQ *)__pyx_t_3); __pyx_t_3 = 0;
4584:
+4585: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_7make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_7make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_6make_params_dict(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_6make_params_dict(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4586: parameters = {'alpha':self.alpha,
__pyx_t_1 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4587: 'beta':self.beta,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4588: 'gIa':self.gIa,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4589: 'gIs':self.gIs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4590: 'gE':self.gE,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4591: 'gA':self.gA,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gA, ((PyObject *)__pyx_v_self->gA)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4592: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tS, __pyx_int_0) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
4593: 'tS': 0,
+4594: 'tE': self.tE,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tE, ((PyObject *)__pyx_v_self->tE)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4595: 'tA': self.tA,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tA, ((PyObject *)__pyx_v_self->tA)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4596: 'tIa': self.tIa,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tIa, ((PyObject *)__pyx_v_self->tIa)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error)
+4597: 'tIs': self.tIs
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tIs, ((PyObject *)__pyx_v_self->tIs)) < 0) __PYX_ERR(0, 4586, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
4598: }
+4599: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
4600:
+4601: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+4602: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
4603: cdef:
4604: double [:] s, e, a, Ia, Is, Q
+4605: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4606: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4606, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4607: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4607, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4608: a = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4608, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4609: Ia = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4609, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4610: Is = x[4*M:5*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4610, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4611: q = x[5*M:6*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4611, __pyx_L1_error)
}
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_2, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
__pyx_v_q = __pyx_t_4;
__pyx_t_4 = 0;
+4612: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_6 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4612, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+4613: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4614: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4615: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4615, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4616: self.noise_correlation(s, e, a, Ia, Is, q, l)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4616, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4617: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4617, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4618: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4619:
+4620: cdef fill_lambdas(self, double [:] a, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4621: cdef:
+4622: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 4622, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+4623: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4623, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4623, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4623, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4624: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+4625: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+4626: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+4627: l[m] += beta[m]*CM[m,n]*(Ia[n]+a[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_17 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_13 * __pyx_v_a.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_14 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
}
}
4628:
+4629: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_jacobian(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4630: cdef:
+4631: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+4632: double [:] gE=self.gE, gA=self.gA, gIa=self.gIa, gIs=self.gIs, fsa=self.fsa
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4632, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4632, __pyx_L1_error) __pyx_v_gA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4632, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4632, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4632, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4633: double [:] tE=self.tE, tA=self.tE, tIa=self.tIa, tIs=self.tIs, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4633, __pyx_L1_error) __pyx_v_tE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4633, __pyx_L1_error) __pyx_v_tA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4633, __pyx_L1_error) __pyx_v_tIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4633, __pyx_L1_error) __pyx_v_tIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4633, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4634: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4634, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4634, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4634, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4635: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4635, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4636: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4636, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+4637: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+4638: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+4639: J[1, m, 0, m] = l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 0;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )));
+4640: J[1, m, 1, m] = - gE[m] - tE[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_10 * __pyx_v_J.strides[0]) ) + __pyx_t_11 * __pyx_v_J.strides[1]) ) + __pyx_t_12 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_8 * __pyx_v_gE.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_9 * __pyx_v_tE.strides[0]) ))));
+4641: J[2, m, 1, m] = gE[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_8 = 2;
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_11 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_8 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_12 * __pyx_v_J.strides[2]) ) + __pyx_t_11 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) )));
+4642: J[2, m, 2, m] = - gA[m] - tA[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = 2;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_9 * __pyx_v_gA.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_11 * __pyx_v_tA.strides[0]) ))));
+4643: J[3, m, 2, m] = alpha[m]*gA[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = 3;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_10 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_11 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_9 * __pyx_v_gA.strides[0]) ))));
+4644: J[3, m, 3, m] = - gIa[m] - tIa[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_9 * __pyx_v_gIa.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_11 * __pyx_v_tIa.strides[0]) ))));
+4645: J[4, m, 2, m] = balpha[m]*gA[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = 4;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_10 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_11 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_9 * __pyx_v_gA.strides[0]) ))));
+4646: J[4, m, 4, m] = -gIs[m] - tIs[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 4;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = 4;
__pyx_t_10 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_10 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_9 * __pyx_v_gIs.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_11 * __pyx_v_tIs.strides[0]) ))));
+4647: J[5, m, 1, m] = tE[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_10 = __pyx_v_m;
__pyx_t_8 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_11 * __pyx_v_tE.strides[0]) )));
+4648: J[5, m, 2, m] = tA[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_13 = 5;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = 2;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_11 * __pyx_v_tA.strides[0]) )));
+4649: J[5, m, 3, m] = tIa[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_10 = __pyx_v_m;
__pyx_t_8 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_8 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_11 * __pyx_v_tIa.strides[0]) )));
+4650: J[5, m, 4, m] = tIs[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_13 = 5;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = 4;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_8 * __pyx_v_J.strides[1]) ) + __pyx_t_10 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_11 * __pyx_v_tIs.strides[0]) )));
+4651: for n in range(M):
__pyx_t_14 = __pyx_v_M;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_n = __pyx_t_16;
+4652: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_8 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_12 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_19 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_12 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_8 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_13 * __pyx_v_fi.strides[0]) ))));
+4653: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_n;
__pyx_t_11 = __pyx_v_n;
__pyx_t_19 = 0;
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = 3;
__pyx_t_12 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_13 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_8 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_9 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_11 * __pyx_v_fi.strides[0]) ))));
+4654: J[0, m, 4, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_11 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_8 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_17 = 0;
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = 4;
__pyx_t_20 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_19 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_8 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_12 * __pyx_v_fi.strides[0]) ))));
+4655: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_11 = 1;
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = 2;
__pyx_t_18 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_11 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_19 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_13 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_9 * __pyx_v_fi.strides[0]) ))));
+4656: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = 3;
__pyx_t_11 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_19 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_11 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_9 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_10 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_13 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_12 * __pyx_v_fi.strides[0]) ))));
+4657: J[1, m, 4, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_11 = __pyx_v_n;
__pyx_t_20 = 1;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 4;
__pyx_t_17 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_19 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_13 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_9 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_11 * __pyx_v_fi.strides[0]) ))));
}
}
+4658: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_21 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_22 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __pyx_t_24 = PyTuple_New(2); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_t_23); __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_23 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_21))) { __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_21); if (likely(__pyx_t_23)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21); __Pyx_INCREF(__pyx_t_23); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_21, function); } } __pyx_t_3 = (__pyx_t_23) ? __Pyx_PyObject_Call2Args(__pyx_t_21, __pyx_t_23, __pyx_t_24) : __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_24); __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4658, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
4659:
+4660: cdef noise_correlation(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_noise_correlation(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4661: cdef:
+4662: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4663: double [:] beta=self.beta, gIa=self.gIa, gIs=self.gIs, gE=self.gE, gA=self.gA
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4663, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4663, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4663, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4663, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4663, __pyx_L1_error) __pyx_v_gA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4664: double [:] tE=self.tE, tA=self.tE, tIa=self.tIa, tIs=self.tIs
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4664, __pyx_L1_error) __pyx_v_tE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4664, __pyx_L1_error) __pyx_v_tA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4664, __pyx_L1_error) __pyx_v_tIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4664, __pyx_L1_error) __pyx_v_tIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4665: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4665, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4665, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4666: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 4666, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+4667: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+4668: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+4669: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_12 = 0;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 1;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_9 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_7 * __pyx_v_s.strides[0]) ))));
+4670: B[1, m, 1, m] = l[m]*s[m] + (gE[m]+tE[m])*e[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = 1;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_13 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_9 * __pyx_v_gE.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_10 * __pyx_v_tE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_11 * __pyx_v_e.strides[0]) )))));
+4671: B[1, m, 2, m] = -gE[m]*e[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = 2;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_8 * __pyx_v_B.strides[1]) ) + __pyx_t_7 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_11 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_10 * __pyx_v_e.strides[0]) ))));
+4672: B[2, m, 2, m] = gE[m]*e[m]+(gA[m]+tA[m])*a[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 2;
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_10 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_11 * __pyx_v_e.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_15 * __pyx_v_gA.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_7 * __pyx_v_tA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_8 * __pyx_v_a.strides[0]) )))));
+4673: B[2, m, 3, m] = -alpha[m]*gA[m]*a[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_11 = 2;
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_11 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_12 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_8 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_7 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_15 * __pyx_v_a.strides[0]) ))));
+4674: B[2, m, 4, m] = -balpha[m]*gA[m]*a[m]
__pyx_t_15 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
__pyx_t_10 = 4;
__pyx_t_11 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_13 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_11 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_15 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_7 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_8 * __pyx_v_a.strides[0]) ))));
+4675: B[3, m, 3, m] = alpha[m]*gA[m]*a[m]+(gIa[m]+tIa[m])*Ia[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = 3;
__pyx_t_14 = __pyx_v_m;
__pyx_t_9 = 3;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_13 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_9 * __pyx_v_B.strides[2]) ) + __pyx_t_16 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_8 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_7 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_15 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_11 * __pyx_v_gIa.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_10 * __pyx_v_tIa.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) )))));
+4676: B[4, m, 4, m] = balpha[m]*gA[m]*a[m] + (gIs[m]+tIs[m])*Is[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_16 = 4;
__pyx_t_9 = __pyx_v_m;
__pyx_t_14 = 4;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_16 * __pyx_v_B.strides[0]) ) + __pyx_t_9 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_12 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_10 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_11 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_15 * __pyx_v_gIs.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_7 * __pyx_v_tIs.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_8 * __pyx_v_Is.strides[0]) )))));
+4677: B[1, m, 5, m] = -tE[m]*e[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_15 = 1;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 5;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_8 * __pyx_v_tE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_7 * __pyx_v_e.strides[0]) ))));
+4678: B[2, m, 5, m] = -tA[m]*a[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 5;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_7 * __pyx_v_tA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_8 * __pyx_v_a.strides[0]) ))));
+4679: B[3, m, 5, m] = -tIa[m]*Ia[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_15 = 3;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = 5;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_11 * __pyx_v_B.strides[1]) ) + __pyx_t_10 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_8 * __pyx_v_tIa.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_7 * __pyx_v_Ia.strides[0]) ))));
+4680: B[4, m, 5, m] = -tIs[m]*Is[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 4;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 5;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_7 * __pyx_v_tIs.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_8 * __pyx_v_Is.strides[0]) ))));
+4681: B[5, m, 5, m] = tE[m]*e[m]+tA[m]*a[m]+tIa[m]*Ia[m]+tIs[m]*Is[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = 5;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_17 * __pyx_v_B.strides[2]) ) + __pyx_t_18 * __pyx_v_B.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_8 * __pyx_v_tE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_7 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_15 * __pyx_v_tA.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_11 * __pyx_v_a.strides[0]) ))))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_10 * __pyx_v_tIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_13 * __pyx_v_tIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))));
}
+4682: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_19 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_20 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_21 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_22 = PyTuple_New(2); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_20); __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_22, 1, __pyx_t_21); __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_21 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_19))) { __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_19); if (likely(__pyx_t_21)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19); __Pyx_INCREF(__pyx_t_21); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_19, function); } } __pyx_t_3 = (__pyx_t_21) ? __Pyx_PyObject_Call2Args(__pyx_t_19, __pyx_t_21, __pyx_t_22) : __Pyx_PyObject_CallOneArg(__pyx_t_19, __pyx_t_22); __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_19, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_19, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_19); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (!(likely(((__pyx_t_22) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_22, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4682, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_22); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_22); __pyx_t_22 = 0;
4683:
4684:
4685: @cython.wraparound(False)
4686: @cython.boundscheck(False)
4687: @cython.cdivision(True)
4688: @cython.nonecheck(False)
+4689: cdef class SEAIRQ_testing(SIR_type):
struct __pyx_obj_6pyross_9inference_SEAIRQ_testing {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
PyArrayObject *gA;
PyArrayObject *ars;
PyArrayObject *kapE;
PyObject *testRate;
struct __pyx_obj_6pyross_13deterministic_SEAIRQ_testing *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *__pyx_vtabptr_6pyross_9inference_SEAIRQ_testing;
4690: """
4691: Susceptible, Exposed, Asymptomatic and infected, Infected, Removed, Quarantined (SEAIRQ)
4692: Ia: asymptomatic
4693: Is: symptomatic
4694: A : Asymptomatic and infectious
4695:
4696: * Ia: asymptomatic
4697: * Is: symptomatic
4698: * E: exposed
4699: * A: asymptomatic and infectious
4700: * Q: quarantined
4701:
4702: To initialise the SEAIRQ class,
4703:
4704: Parameters
4705: ----------
4706: parameters: dict
4707: Contains the following keys:
4708:
4709: alpha: float or np.array(M)
4710: Fraction of infected who are asymptomatic.
4711: beta: float
4712: Rate of spread of infection.
4713: gIa: float
4714: Rate of removal from asymptomatic individuals.
4715: gIs: float
4716: Rate of removal from symptomatic individuals.
4717: gE: float
4718: rate of removal from exposed individuals.
4719: gA: float
4720: rate of removal from activated individuals.
4721: fsa: float
4722: Fraction by which symptomatic individuals do not self-isolate.
4723: ars : float
4724: fraction of population admissible for random and symptomatic tests
4725: kapE : float
4726: fraction of positive tests for exposed individuals
4727: testRate: python function
4728: number of tests per day and age group
4729: M: int
4730: Number of compartments
4731: fi: float numpy.array
4732: Number of people in each age group divided by Omega.
4733: Omega: float, optional
4734: System size, e.g. total population. Default is 1.
4735: steps: int, optional
4736: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4737: For robustness, set steps to be large, lyapunov_method='LSODA'.
4738: For speed, set steps to be small (~4), lyapunov_method='euler'.
4739: For a combination of the two, choose something in between.
4740: det_method: str, optional
4741: The integration method used for deterministic integration.
4742: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4743: lyapunov_method: str, optional
4744: The integration method used for the integration of the Lyapunov equation for the covariance.
4745: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4746: rtol_det: float, optional
4747: relative tolerance for the deterministic integrator (default 1e-3)
4748: rtol_lyapunov: float, optional
4749: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4750: max_steps_det: int, optional
4751: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
4752: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4753: max_steps_lyapunov: int, optional
4754: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4755: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4756: """
4757:
4758: cdef:
+4759: readonly np.ndarray gE, gA, ars, kapE
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gA));
__pyx_r = ((PyObject *)__pyx_v_self->gA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3ars_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3ars_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_3ars___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_3ars___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->ars));
__pyx_r = ((PyObject *)__pyx_v_self->ars);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_4kapE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_4kapE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_4kapE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_4kapE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->kapE));
__pyx_r = ((PyObject *)__pyx_v_self->kapE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4760: readonly object testRate
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_8testRate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_8testRate_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_8testRate___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_8testRate___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->testRate);
__pyx_r = __pyx_v_self->testRate;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4761: readonly pyross.deterministic.SEAIRQ_testing det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_9det_model___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4762:
+4763: def __init__(self, parameters, testRate, M, fi, Omega=1, steps=4, det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_14SEAIRQ_testing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_14SEAIRQ_testing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_testRate = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_testRate,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)__pyx_int_1);
values[5] = ((PyObject *)__pyx_int_4);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_float_1eneg_3);
values[10] = ((PyObject *)__pyx_int_0);
values[11] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_testRate)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 12, 1); __PYX_ERR(0, 4763, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 12, 2); __PYX_ERR(0, 4763, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 12, 3); __PYX_ERR(0, 4763, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 4763, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_testRate = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_Omega = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
__pyx_v_rtol_det = values[8];
__pyx_v_rtol_lyapunov = values[9];
__pyx_v_max_steps_det = values[10];
__pyx_v_max_steps_lyapunov = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4763, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing___init__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), __pyx_v_parameters, __pyx_v_testRate, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_14SEAIRQ_testing___init__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_testRate, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4764: self.param_keys = ['alpha', 'beta', 'gE', 'gA', \
__pyx_t_1 = PyList_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_alpha); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_beta); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_gE); __Pyx_INCREF(__pyx_n_u_gA); __Pyx_GIVEREF(__pyx_n_u_gA); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_gA); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_gIa); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_gIs); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_fsa); __Pyx_INCREF(__pyx_n_u_ars); __Pyx_GIVEREF(__pyx_n_u_ars); PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_ars); __Pyx_INCREF(__pyx_n_u_kapE); __Pyx_GIVEREF(__pyx_n_u_kapE); PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_u_kapE); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
4765: 'gIa', 'gIs', 'fsa', \
4766: 'ars', 'kapE']
+4767: super().__init__(parameters, 6, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[13] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 12+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(12+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_6); __Pyx_GIVEREF(__pyx_int_6); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_6); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_4, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_4, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_4, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_4, __pyx_v_max_steps_lyapunov); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4768: self.testRate=testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+4769: self.class_index_dict = {'S':0, 'E':1, 'A':2, 'Ia':3, 'Is':4, 'Q':5}
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_A, __pyx_int_2) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_3) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_4) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Q, __pyx_int_5) < 0) __PYX_ERR(0, 4769, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+4770: self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4771:
+4772: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4773: return (1, 2, 3, 4)
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_tuple__43); __pyx_r = __pyx_tuple__43; goto __pyx_L0; /* … */ __pyx_tuple__43 = PyTuple_Pack(4, __pyx_int_1, __pyx_int_2, __pyx_int_3, __pyx_int_4); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 4773, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__43); __Pyx_GIVEREF(__pyx_tuple__43);
4774:
+4775: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_4set_params(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_4set_params(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4776: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4777: self.gE = pyross.utils.age_dep_rates(parameters['gE'], self.M, 'gE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4777, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gE); __Pyx_DECREF(((PyObject *)__pyx_v_self->gE)); __pyx_v_self->gE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+4778: self.gA = pyross.utils.age_dep_rates(parameters['gA'], self.M, 'gA')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gA); __Pyx_GIVEREF(__pyx_n_u_gA); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_gA); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4778, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gA); __Pyx_DECREF(((PyObject *)__pyx_v_self->gA)); __pyx_v_self->gA = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+4779: self.ars = pyross.utils.age_dep_rates(parameters['ars'], self.M, 'ars')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_ars); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_ars}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_ars}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_ars); __Pyx_GIVEREF(__pyx_n_u_ars); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_ars); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4779, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->ars); __Pyx_DECREF(((PyObject *)__pyx_v_self->ars)); __pyx_v_self->ars = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+4780: self.kapE = pyross.utils.age_dep_rates(parameters['kapE'], self.M, 'kapE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_kapE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_kapE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_kapE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_kapE); __Pyx_GIVEREF(__pyx_n_u_kapE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_kapE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4780, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->kapE); __Pyx_DECREF(((PyObject *)__pyx_v_self->kapE)); __pyx_v_self->kapE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
4781:
4782:
+4783: def set_testRate(self, testRate):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_6set_testRate(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_testRate));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_6set_testRate(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4784: self.testRate=testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
4785:
+4786: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_8make_det_model(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_8make_det_model(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4787: self.det_model = pyross.deterministic.SEAIRQ_testing(parameters, self.M, self.fi*self.Omega)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.Omega); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEAIRQ_testing), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SEAIRQ_testing *)__pyx_t_3); __pyx_t_3 = 0;
+4788: self.det_model.set_testRate(self.testRate)
__pyx_t_3 = __pyx_v_self->testRate; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_13deterministic_SEAIRQ_testing *)__pyx_v_self->det_model->__pyx_base.__pyx_vtab)->set_testRate(__pyx_v_self->det_model, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4789:
+4790: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_11make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_11make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_10make_params_dict(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_10make_params_dict(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4791: parameters = {'alpha':self.alpha,
__pyx_t_1 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4792: 'beta':self.beta,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4793: 'gIa':self.gIa,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4794: 'gIs':self.gIs,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4795: 'gE':self.gE,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4796: 'gA':self.gA,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_gA, ((PyObject *)__pyx_v_self->gA)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4797: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4798: 'ars': self.ars,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_ars, ((PyObject *)__pyx_v_self->ars)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error)
+4799: 'kapE': self.kapE
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_kapE, ((PyObject *)__pyx_v_self->kapE)) < 0) __PYX_ERR(0, 4791, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
4800: }
+4801: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
4802:
+4803: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_TR, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+4804: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_TR = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
4805: cdef:
4806: double [:] s, e, a, Ia, Is, Q, TR
+4807: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4808: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4808, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4809: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4809, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4810: a = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4810, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4811: Ia = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4811, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4812: Is = x[4*M:5*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4812, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+4813: q = x[5*M:6*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 4813, __pyx_L1_error)
}
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_2, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4813, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
__pyx_v_q = __pyx_t_4;
__pyx_t_4 = 0;
+4814: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_6 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4814, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+4815: TR=self.testRate(t)
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_5 = __pyx_v_self->testRate; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_TR = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4816: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4816, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4817: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4818: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4818, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4819: self.noise_correlation(s, e, a, Ia, Is, q, l, TR)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4819, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4820: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 4820, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+4821: self.jacobian(s, e, a, Ia, Is, q, l, TR)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4821, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4821, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4822:
+4823: cdef fill_lambdas(self, double [:] a, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4824: cdef:
+4825: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 4825, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+4826: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4826, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4826, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 4826, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+4827: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+4828: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+4829: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+4830: l[m] += beta[m]*CM[m,n]*(Ia[n]+a[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_17 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_13 * __pyx_v_a.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_14 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
}
}
4831:
+4832: cdef jacobian(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l, double [:] TR):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_jacobian(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_TR) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
double __pyx_v_Omega;
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_ars = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kapE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t0;
double __pyx_v_tE;
double __pyx_v_tA;
double __pyx_v_tIa;
double __pyx_v_tIs;
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_25);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_ars, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_kapE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4833: cdef:
+4834: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+4835: double Omega = self.Omega
__pyx_t_2 = __pyx_v_self->__pyx_base.Omega; __pyx_v_Omega = __pyx_t_2;
+4836: double [:] gE=self.gE, gA=self.gA, gIa=self.gIa, gIs=self.gIs, fsa=self.fsa
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4836, __pyx_L1_error) __pyx_v_gE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4836, __pyx_L1_error) __pyx_v_gA = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4836, __pyx_L1_error) __pyx_v_gIa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4836, __pyx_L1_error) __pyx_v_gIs = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4836, __pyx_L1_error) __pyx_v_fsa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+4837: double [:] ars=self.ars, kapE=self.kapE, beta=self.beta
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->ars), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4837, __pyx_L1_error) __pyx_v_ars = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->kapE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4837, __pyx_L1_error) __pyx_v_kapE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4837, __pyx_L1_error) __pyx_v_beta = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
4838: double t0, tE, tA, tIa, tIs
+4839: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4839, __pyx_L1_error) __pyx_v_alpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_4 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4839, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_balpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4839, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+4840: double [:, :, :, :] J = self.J
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4840, __pyx_L1_error) __pyx_v_J = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+4841: double [:, :] CM=self.CM
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 4841, __pyx_L1_error) __pyx_v_CM = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+4842: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_m = __pyx_t_8;
+4843: t0 = 1./(ars[m]*(self.fi[m]-q[m]-Is[m])+Is[m])
__pyx_t_9 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_9 * __pyx_v_ars.strides[0]) )))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_9 = __pyx_v_m;
__pyx_t_11 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_q.data + __pyx_t_9 * __pyx_v_q.strides[0]) )))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = PyNumber_Subtract(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_9 = __pyx_v_m;
__pyx_t_11 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_9 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_10 = PyNumber_Subtract(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_9 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_4 = PyNumber_Add(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_, __pyx_t_4, 1., 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4843, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_v_t0 = __pyx_t_2;
+4844: tE = TR[m]*ars[m]*kapE[m]*t0/Omega
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_v_tE = (((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_9 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_13 * __pyx_v_ars.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_kapE.data + __pyx_t_14 * __pyx_v_kapE.strides[0]) )))) * __pyx_v_t0) / __pyx_v_Omega);
+4845: tA= TR[m]*ars[m]*t0/Omega
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_v_tA = ((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_14 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_13 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) / __pyx_v_Omega);
+4846: tIa = TR[m]*ars[m]*t0/Omega
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_v_tIa = ((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_13 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_14 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) / __pyx_v_Omega);
+4847: tIs = TR[m]*t0/Omega
__pyx_t_14 = __pyx_v_m;
__pyx_v_tIs = (((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_14 * __pyx_v_TR.strides[0]) ))) * __pyx_v_t0) / __pyx_v_Omega);
4848:
+4849: for n in range(M):
__pyx_t_15 = __pyx_v_M;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_n = __pyx_t_17;
+4850: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_20 = 0;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = 2;
__pyx_t_23 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_21 * __pyx_v_J.strides[1]) ) + __pyx_t_22 * __pyx_v_J.strides[2]) ) + __pyx_t_23 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_14 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_13 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_9 * __pyx_v_CM.strides[0]) ) + __pyx_t_18 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_19 * __pyx_v_fi.strides[0]) ))));
+4851: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_23 = 0;
__pyx_t_22 = __pyx_v_m;
__pyx_t_21 = 3;
__pyx_t_20 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_23 * __pyx_v_J.strides[0]) ) + __pyx_t_22 * __pyx_v_J.strides[1]) ) + __pyx_t_21 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_19 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_18 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_9 * __pyx_v_CM.strides[0]) ) + __pyx_t_13 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_14 * __pyx_v_fi.strides[0]) ))));
+4852: J[0, m, 4, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = __pyx_v_n;
__pyx_t_19 = __pyx_v_n;
__pyx_t_20 = __pyx_v_n;
__pyx_t_21 = 0;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = 4;
__pyx_t_24 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_21 * __pyx_v_J.strides[0]) ) + __pyx_t_22 * __pyx_v_J.strides[1]) ) + __pyx_t_23 * __pyx_v_J.strides[2]) ) + __pyx_t_24 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_14 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_13 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_9 * __pyx_v_CM.strides[0]) ) + __pyx_t_18 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_19 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_20 * __pyx_v_fi.strides[0]) ))));
+4853: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_9 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = 1;
__pyx_t_24 = __pyx_v_m;
__pyx_t_23 = 2;
__pyx_t_22 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_24 * __pyx_v_J.strides[1]) ) + __pyx_t_23 * __pyx_v_J.strides[2]) ) + __pyx_t_22 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_20 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_19 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_18 * __pyx_v_CM.strides[0]) ) + __pyx_t_9 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_13 * __pyx_v_fi.strides[0]) ))));
+4854: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_n;
__pyx_t_20 = __pyx_v_n;
__pyx_t_22 = 1;
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = 3;
__pyx_t_14 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_22 * __pyx_v_J.strides[0]) ) + __pyx_t_23 * __pyx_v_J.strides[1]) ) + __pyx_t_24 * __pyx_v_J.strides[2]) ) + __pyx_t_14 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_13 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_18 * __pyx_v_CM.strides[0]) ) + __pyx_t_19 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_20 * __pyx_v_fi.strides[0]) ))));
+4855: J[1, m, 4, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_9 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_24 = 1;
__pyx_t_23 = __pyx_v_m;
__pyx_t_22 = 4;
__pyx_t_21 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_24 * __pyx_v_J.strides[0]) ) + __pyx_t_23 * __pyx_v_J.strides[1]) ) + __pyx_t_22 * __pyx_v_J.strides[2]) ) + __pyx_t_21 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_20 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_19 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_18 * __pyx_v_CM.strides[0]) ) + __pyx_t_9 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_14 * __pyx_v_fi.strides[0]) ))));
}
+4856: J[0, m, 0, m] = -l[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 0;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_14 * __pyx_v_l.strides[0]) ))));
+4857: J[1, m, 0, m] = l[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_19 = 1;
__pyx_t_18 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_14 * __pyx_v_l.strides[0]) )));
+4858: J[1, m, 1, m] = - gE[m] - tE
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 1;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_14 * __pyx_v_gE.strides[0]) )))) - __pyx_v_tE);
+4859: J[1, m, 4, m] += (1-ars[m])*tE*t0*e[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = 4;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) += ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_14 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tE) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_19 * __pyx_v_e.strides[0]) ))));
+4860: J[1, m, 5, m] = -ars[m]*tE*t0*e[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_20 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_19 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tE) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_14 * __pyx_v_e.strides[0]) ))));
+4861: J[2, m, 1, m] = gE[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_19 = 2;
__pyx_t_18 = __pyx_v_m;
__pyx_t_9 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_14 * __pyx_v_gE.strides[0]) )));
+4862: J[2, m, 2, m] = - gA[m] - tA
__pyx_t_14 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_14 * __pyx_v_gA.strides[0]) )))) - __pyx_v_tA);
+4863: J[2, m, 4, m] = (1-ars[m])*tA*t0*a[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = 4;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_14 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tA) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_19 * __pyx_v_a.strides[0]) ))));
+4864: J[2, m, 5, m] = - ars[m]*tA*t0*a[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_20 = 2;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_13 * __pyx_v_J.strides[1]) ) + __pyx_t_9 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_19 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tA) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_14 * __pyx_v_a.strides[0]) ))));
+4865: J[3, m, 2, m] = alpha[m]*gA[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 3;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_9 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_14 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_19 * __pyx_v_gA.strides[0]) ))));
+4866: J[3, m, 3, m] = - gIa[m] - tIa
__pyx_t_19 = __pyx_v_m;
__pyx_t_14 = 3;
__pyx_t_20 = __pyx_v_m;
__pyx_t_13 = 3;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_19 * __pyx_v_gIa.strides[0]) )))) - __pyx_v_tIa);
+4867: J[3, m, 4, m] = (1-ars[m])*tIa*t0*Ia[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = 3;
__pyx_t_20 = __pyx_v_m;
__pyx_t_14 = 4;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_14 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_19 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIa) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_9 * __pyx_v_Ia.strides[0]) ))));
+4868: J[3, m, 5, m] = - ars[m]*tIa*t0*Ia[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = 3;
__pyx_t_14 = __pyx_v_m;
__pyx_t_20 = 5;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_14 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_9 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIa) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_19 * __pyx_v_Ia.strides[0]) ))));
+4869: J[4, m, 2, m] = balpha[m]*gA[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_9 = __pyx_v_m;
__pyx_t_13 = 4;
__pyx_t_20 = __pyx_v_m;
__pyx_t_14 = 2;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_14 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_19 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_9 * __pyx_v_gA.strides[0]) ))));
+4870: J[4, m, 4, m] = - gIs[m] - tIs + (1-ars[m])*tIs*t0*Is[m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_14 = 4;
__pyx_t_20 = __pyx_v_m;
__pyx_t_13 = 4;
__pyx_t_21 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_21 * __pyx_v_J.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_9 * __pyx_v_gIs.strides[0]) )))) - __pyx_v_tIs) + ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_19 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIs) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_18 * __pyx_v_Is.strides[0]) )))));
+4871: J[4, m, 5, m] = - ars[m]*tIs*t0*Is[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_9 = 4;
__pyx_t_21 = __pyx_v_m;
__pyx_t_13 = 5;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_21 * __pyx_v_J.strides[1]) ) + __pyx_t_13 * __pyx_v_J.strides[2]) ) + __pyx_t_20 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_18 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIs) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_19 * __pyx_v_Is.strides[0]) ))));
+4872: J[5, m, 1, m] = tE
__pyx_t_19 = 5;
__pyx_t_18 = __pyx_v_m;
__pyx_t_20 = 1;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = __pyx_v_tE;
+4873: J[5, m, 2, m] = tA
__pyx_t_13 = 5;
__pyx_t_20 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_13 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_19 * __pyx_v_J.strides[3]) )) = __pyx_v_tA;
+4874: J[5, m, 3, m] = tIa
__pyx_t_19 = 5;
__pyx_t_18 = __pyx_v_m;
__pyx_t_20 = 3;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_20 * __pyx_v_J.strides[2]) ) + __pyx_t_13 * __pyx_v_J.strides[3]) )) = __pyx_v_tIa;
+4875: J[5, m, 4, m] = tIs - (1-ars[m])*t0*(tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m])
__pyx_t_13 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_9 = 5;
__pyx_t_14 = __pyx_v_m;
__pyx_t_22 = 4;
__pyx_t_23 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_14 * __pyx_v_J.strides[1]) ) + __pyx_t_22 * __pyx_v_J.strides[2]) ) + __pyx_t_23 * __pyx_v_J.strides[3]) )) = (__pyx_v_tIs - (((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_13 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) * ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_20 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_18 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_19 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_21 * __pyx_v_Is.strides[0]) )))))));
+4876: J[5, m, 5, m] = ars[m]*t0*(tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m])
__pyx_t_21 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_23 = 5;
__pyx_t_22 = __pyx_v_m;
__pyx_t_14 = 5;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_23 * __pyx_v_J.strides[0]) ) + __pyx_t_22 * __pyx_v_J.strides[1]) ) + __pyx_t_14 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_21 * __pyx_v_ars.strides[0]) ))) * __pyx_v_t0) * ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_19 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_18 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_20 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_13 * __pyx_v_Is.strides[0]) ))))));
}
+4877: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_t_12); __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_12, __pyx_t_25) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_25); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4877, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_10); __pyx_t_10 = 0;
4878:
4879:
+4880: cdef noise_correlation(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l, double [:] TR):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_noise_correlation(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_TR) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
double __pyx_v_Omega;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_ars = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kapE = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_tE;
double __pyx_v_tA;
double __pyx_v_tIa;
double __pyx_v_tIs;
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_t0 = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_ars, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_kapE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XDECREF(__pyx_v_t0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4881: cdef:
+4882: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+4883: double Omega=self.Omega
__pyx_t_2 = __pyx_v_self->__pyx_base.Omega; __pyx_v_Omega = __pyx_t_2;
+4884: double [:] beta=self.beta, gIa=self.gIa, gIs=self.gIs, gE=self.gE, gA=self.gA
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4884, __pyx_L1_error) __pyx_v_beta = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4884, __pyx_L1_error) __pyx_v_gIa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4884, __pyx_L1_error) __pyx_v_gIs = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4884, __pyx_L1_error) __pyx_v_gE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4884, __pyx_L1_error) __pyx_v_gA = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+4885: double [:] ars=self.ars, kapE=self.kapE
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->ars), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4885, __pyx_L1_error) __pyx_v_ars = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->kapE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4885, __pyx_L1_error) __pyx_v_kapE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
4886: double tE, tA, tIa, tIs
+4887: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4887, __pyx_L1_error) __pyx_v_alpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_4 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 4887, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_balpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+4888: double [:, :, :, :] B = self.B
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 4888, __pyx_L1_error) __pyx_v_B = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+4889: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+4890: t0 = 1./(ars[m]*(self.fi[m]-q[m]-Is[m])+Is[m])
__pyx_t_8 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_8 * __pyx_v_ars.strides[0]) )))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_q.data + __pyx_t_8 * __pyx_v_q.strides[0]) )))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = PyNumber_Subtract(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_8 = __pyx_v_m;
__pyx_t_10 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_8 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_9 = PyNumber_Subtract(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = PyNumber_Multiply(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_8 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Add(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_, __pyx_t_4, 1., 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_t0, __pyx_t_9);
__pyx_t_9 = 0;
+4891: tE = TR[m]*ars[m]*kapE[m]*t0/Omega
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_8 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_12 * __pyx_v_ars.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_kapE.data + __pyx_t_13 * __pyx_v_kapE.strides[0]) ))))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Multiply(__pyx_t_9, __pyx_v_t0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyFloat_FromDouble(__pyx_v_Omega); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_v_tE = __pyx_t_2;
+4892: tA= TR[m]*ars[m]*t0/Omega
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_10 = PyFloat_FromDouble(((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_13 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_12 * __pyx_v_ars.strides[0]) ))))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_9 = PyNumber_Multiply(__pyx_t_10, __pyx_v_t0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = PyFloat_FromDouble(__pyx_v_Omega); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_tA = __pyx_t_2;
+4893: tIa = TR[m]*ars[m]*t0/Omega
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble(((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_12 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_13 * __pyx_v_ars.strides[0]) ))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = PyNumber_Multiply(__pyx_t_4, __pyx_v_t0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_tIa = __pyx_t_2;
+4894: tIs = TR[m]*t0/Omega
__pyx_t_13 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_13 * __pyx_v_TR.strides[0]) )))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Multiply(__pyx_t_9, __pyx_v_t0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyFloat_FromDouble(__pyx_v_Omega); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_v_tIs = __pyx_t_2;
4895:
+4896: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = 0;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = 0;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_8 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_15 * __pyx_v_B.strides[2]) ) + __pyx_t_16 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) ))));
+4897: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = __pyx_v_m;
__pyx_t_16 = 0;
__pyx_t_15 = __pyx_v_m;
__pyx_t_14 = 1;
__pyx_t_8 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_16 * __pyx_v_B.strides[0]) ) + __pyx_t_15 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_8 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_12 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_13 * __pyx_v_s.strides[0]) ))));
+4898: B[1, m, 1, m] = l[m]*s[m] + (gE[m]+tE)*e[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = 1;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = 1;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_17 * __pyx_v_B.strides[2]) ) + __pyx_t_18 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_12 * __pyx_v_s.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_8 * __pyx_v_gE.strides[0]) ))) + __pyx_v_tE) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_14 * __pyx_v_e.strides[0]) )))));
+4899: B[1, m, 2, m] = -gE[m]*e[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_12 = 1;
__pyx_t_13 = __pyx_v_m;
__pyx_t_18 = 2;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_13 * __pyx_v_B.strides[1]) ) + __pyx_t_18 * __pyx_v_B.strides[2]) ) + __pyx_t_17 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_14 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_8 * __pyx_v_e.strides[0]) ))));
+4900: B[2, m, 2, m] = gE[m]*e[m]+(gA[m]+tA)*a[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_13 = 2;
__pyx_t_12 = __pyx_v_m;
__pyx_t_16 = 2;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_13 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_16 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_8 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_14 * __pyx_v_e.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_17 * __pyx_v_gA.strides[0]) ))) + __pyx_v_tA) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_18 * __pyx_v_a.strides[0]) )))));
+4901: B[2, m, 3, m] = -alpha[m]*gA[m]*a[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = 2;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = 3;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_8 * __pyx_v_B.strides[0]) ) + __pyx_t_15 * __pyx_v_B.strides[1]) ) + __pyx_t_16 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_18 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_17 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_14 * __pyx_v_a.strides[0]) ))));
+4902: B[2, m, 4, m] = -balpha[m]*gA[m]*a[m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_12 = 2;
__pyx_t_16 = __pyx_v_m;
__pyx_t_15 = 4;
__pyx_t_8 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_12 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_15 * __pyx_v_B.strides[2]) ) + __pyx_t_8 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_14 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_17 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_18 * __pyx_v_a.strides[0]) ))));
+4903: B[3, m, 3, m] = alpha[m]*gA[m]*a[m]+(gIa[m]+tIa)*Ia[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = 3;
__pyx_t_12 = __pyx_v_m;
__pyx_t_13 = 3;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_16 * __pyx_v_B.strides[0]) ) + __pyx_t_12 * __pyx_v_B.strides[1]) ) + __pyx_t_13 * __pyx_v_B.strides[2]) ) + __pyx_t_19 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_18 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_17 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_14 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_8 * __pyx_v_gIa.strides[0]) ))) + __pyx_v_tIa) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_15 * __pyx_v_Ia.strides[0]) )))));
+4904: B[4, m, 4, m] = balpha[m]*gA[m]*a[m] + (gIs[m]+tIs)*Is[m]
__pyx_t_15 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = 4;
__pyx_t_13 = __pyx_v_m;
__pyx_t_12 = 4;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_19 * __pyx_v_B.strides[0]) ) + __pyx_t_13 * __pyx_v_B.strides[1]) ) + __pyx_t_12 * __pyx_v_B.strides[2]) ) + __pyx_t_16 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_15 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_8 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_14 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_17 * __pyx_v_gIs.strides[0]) ))) + __pyx_v_tIs) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_18 * __pyx_v_Is.strides[0]) )))));
+4905: B[1, m, 5, m] = -tE*e[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = 1;
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = 5;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_17 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_8 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tE) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_18 * __pyx_v_e.strides[0]) ))));
+4906: B[2, m, 5, m] = -tA*a[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_15 = 2;
__pyx_t_8 = __pyx_v_m;
__pyx_t_14 = 5;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_8 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_17 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tA) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_18 * __pyx_v_a.strides[0]) ))));
+4907: B[3, m, 5, m] = -tIa*Ia[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = 3;
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = 5;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_17 * __pyx_v_B.strides[0]) ) + __pyx_t_14 * __pyx_v_B.strides[1]) ) + __pyx_t_8 * __pyx_v_B.strides[2]) ) + __pyx_t_15 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tIa) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_18 * __pyx_v_Ia.strides[0]) ))));
+4908: B[4, m, 5, m] = -tIs*Is[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_15 = 4;
__pyx_t_8 = __pyx_v_m;
__pyx_t_14 = 5;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_8 * __pyx_v_B.strides[1]) ) + __pyx_t_14 * __pyx_v_B.strides[2]) ) + __pyx_t_17 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tIs) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_18 * __pyx_v_Is.strides[0]) ))));
+4909: B[5, m, 5, m] = tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_15 = 5;
__pyx_t_16 = __pyx_v_m;
__pyx_t_12 = 5;
__pyx_t_13 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_12 * __pyx_v_B.strides[2]) ) + __pyx_t_13 * __pyx_v_B.strides[3]) )) = ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_18 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_17 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_14 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_8 * __pyx_v_Is.strides[0]) )))));
}
+4910: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_20 = PyTuple_New(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_t_11); __pyx_t_4 = 0; __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_20) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_20); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_20 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!(likely(((__pyx_t_20) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_20, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4910, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_20); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_20); __pyx_t_20 = 0;
4911:
4912:
4913:
4914:
4915: @cython.wraparound(False)
4916: @cython.boundscheck(False)
4917: @cython.cdivision(True)
4918: @cython.nonecheck(False)
+4919: cdef class Model(SIR_type):
struct __pyx_obj_6pyross_9inference_Model {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *constant_terms;
PyArrayObject *linear_terms;
PyArrayObject *infection_terms;
PyArrayObject *finres_terms;
PyArrayObject *resource_list;
PyArrayObject *model_parameters;
PyArrayObject *model_parameters_length;
PyArrayObject *finres_pop;
struct __pyx_obj_6pyross_13deterministic_Model *det_model;
PyObject *model_spec;
PyObject *param_dict;
PyObject *model_param_keys;
PyObject *parameter_mapping;
PyObject *time_dep_param_mapping;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_Model {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_Model *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*fill_finres_pop)(struct __pyx_obj_6pyross_9inference_Model *, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_Model *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_Model *, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_Model *__pyx_vtabptr_6pyross_9inference_Model;
4920: """
4921: Generic user-defined epidemic model.
4922:
4923: To initialise the Model,
4924:
4925: Parameters
4926: ----------
4927: model_spec: dict
4928: A dictionary specifying the model. See `Examples`.
4929: parameters: dict
4930: A dictionary containing the model parameters.
4931: All parameters can be float if not age-dependent, and np.array(M,) if age-dependent
4932: M: int
4933: Number of age groups.
4934: fi: np.array(M) or list
4935: Fraction of each age group.
4936: Omega: int
4937: Total population.
4938: steps: int, optional
4939: The number of internal integration steps performed between the observed points (not used in tangent space inference).
4940: For robustness, set steps to be large, lyapunov_method='LSODA'.
4941: For speed, set steps to be small (~4), lyapunov_method='euler'.
4942: For a combination of the two, choose something in between.
4943: det_method: str, optional
4944: The integration method used for deterministic integration.
4945: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
4946: lyapunov_method: str, optional
4947: The integration method used for the integration of the Lyapunov equation for the covariance.
4948: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
4949: rtol_det: float, optional
4950: relative tolerance for the deterministic integrator (default 1e-3)
4951: rtol_lyapunov: float, optional
4952: relative tolerance for the Lyapunov-type integrator (default 1e-3)
4953: max_steps_det: int, optional
4954: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
4955: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
4956: max_steps_lyapunov: int, optional
4957: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
4958: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
4959: parameter_mapping: python function, optional
4960: A user-defined function that maps the dictionary the parameters used for inference to a dictionary of parameters used in model_spec. Default is an identical mapping.
4961: time_dep_param_mapping: python function, optional
4962: As parameter_mapping, but time-dependent. The user-defined function takes time as a second argument.
4963:
4964: See `SIR_type` for a table of all the methods
4965:
4966: Examples
4967: --------
4968: An example of model_spec and parameters for SIR class with a constant influx
4969:
4970: >>> model_spec = {
4971: "classes" : ["S", "I"],
4972: "S" : {
4973: "constant" : [ ["k"] ],
4974: "infection" : [ ["I", "S", "-beta"] ]
4975: },
4976: "I" : {
4977: "linear" : [ ["I", "-gamma"] ],
4978: "infection" : [ ["I", "S", "beta"] ]
4979: }
4980: }
4981: >>> parameters = {
4982: 'beta': 0.1,
4983: 'gamma': 0.1,
4984: 'k': 1,
4985: }
4986: """
4987:
4988: cdef:
+4989: readonly np.ndarray constant_terms, linear_terms, infection_terms, finres_terms, resource_list
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_14constant_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_14constant_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_14constant_terms___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_14constant_terms___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->constant_terms));
__pyx_r = ((PyObject *)__pyx_v_self->constant_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_12linear_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_12linear_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_12linear_terms___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_12linear_terms___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->linear_terms));
__pyx_r = ((PyObject *)__pyx_v_self->linear_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_15infection_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_15infection_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_15infection_terms___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_15infection_terms___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->infection_terms));
__pyx_r = ((PyObject *)__pyx_v_self->infection_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_12finres_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_12finres_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_12finres_terms___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_12finres_terms___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->finres_terms));
__pyx_r = ((PyObject *)__pyx_v_self->finres_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_13resource_list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_13resource_list_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_13resource_list___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_13resource_list___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->resource_list));
__pyx_r = ((PyObject *)__pyx_v_self->resource_list);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4990: readonly np.ndarray model_parameters
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_16model_parameters_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_16model_parameters_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_16model_parameters___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_16model_parameters___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->model_parameters));
__pyx_r = ((PyObject *)__pyx_v_self->model_parameters);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4991: readonly np.ndarray model_parameters_length
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_23model_parameters_length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_23model_parameters_length_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_23model_parameters_length___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_23model_parameters_length___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->model_parameters_length));
__pyx_r = ((PyObject *)__pyx_v_self->model_parameters_length);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4992: readonly np.ndarray finres_pop
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_10finres_pop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_10finres_pop_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_10finres_pop___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_10finres_pop___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->finres_pop));
__pyx_r = ((PyObject *)__pyx_v_self->finres_pop);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4993: readonly pyross.deterministic.Model det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_9det_model___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_9det_model___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4994: readonly dict model_spec
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_10model_spec_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_10model_spec_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_10model_spec___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_10model_spec___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->model_spec);
__pyx_r = __pyx_v_self->model_spec;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4995: readonly dict param_dict
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_10param_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_10param_dict_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_10param_dict___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_10param_dict___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->param_dict);
__pyx_r = __pyx_v_self->param_dict;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4996: readonly list model_param_keys
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_16model_param_keys_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_16model_param_keys_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_16model_param_keys___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_16model_param_keys___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->model_param_keys);
__pyx_r = __pyx_v_self->model_param_keys;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4997: readonly object parameter_mapping
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_17parameter_mapping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_17parameter_mapping_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_17parameter_mapping___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_17parameter_mapping___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->parameter_mapping);
__pyx_r = __pyx_v_self->parameter_mapping;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4998: readonly object time_dep_param_mapping
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_22time_dep_param_mapping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_22time_dep_param_mapping_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_22time_dep_param_mapping___get__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_22time_dep_param_mapping___get__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->time_dep_param_mapping);
__pyx_r = __pyx_v_self->time_dep_param_mapping;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4999:
5000:
5001:
+5002: def __init__(self, model_spec, parameters, M, fi, Omega=1, steps=4,
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_5Model_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_5Model_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_model_spec = 0;
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
PyObject *__pyx_v_parameter_mapping = 0;
PyObject *__pyx_v_time_dep_param_mapping = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_spec,&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,&__pyx_n_s_parameter_mapping,&__pyx_n_s_time_dep_param_mapping,0};
PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)__pyx_int_1);
values[5] = ((PyObject *)__pyx_int_4);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_float_1eneg_3);
values[10] = ((PyObject *)__pyx_int_0);
values[11] = ((PyObject *)__pyx_int_0);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_5Model___init__(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, PyObject *__pyx_v_model_spec, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov, PyObject *__pyx_v_parameter_mapping, PyObject *__pyx_v_time_dep_param_mapping) {
PyObject *__pyx_v_res = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_ndx = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
__Pyx_INCREF(__pyx_v_parameters);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Model.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_ndx);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5003: det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0,
+5004: parameter_mapping=None, time_dep_param_mapping=None):
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model_spec)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 1); __PYX_ERR(0, 5002, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 2); __PYX_ERR(0, 5002, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 3); __PYX_ERR(0, 5002, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameter_mapping);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_time_dep_param_mapping);
if (value) { values[13] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 5002, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_model_spec = values[0];
__pyx_v_parameters = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_Omega = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
__pyx_v_rtol_det = values[8];
__pyx_v_rtol_lyapunov = values[9];
__pyx_v_max_steps_det = values[10];
__pyx_v_max_steps_lyapunov = values[11];
__pyx_v_parameter_mapping = values[12];
__pyx_v_time_dep_param_mapping = values[13];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 5002, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Model.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_5Model___init__(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self), __pyx_v_model_spec, __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov, __pyx_v_parameter_mapping, __pyx_v_time_dep_param_mapping);
+5005: if parameter_mapping is not None and time_dep_param_mapping is not None:
__pyx_t_2 = (__pyx_v_parameter_mapping != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
} else {
__pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_time_dep_param_mapping != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+5006: raise Exception('Specify either parameter_mapping or time_dep_param_mapping')
__pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 5006, __pyx_L1_error) /* … */ __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_u_Specify_either_parameter_mapping); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 5006, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44);
+5007: self.parameter_mapping = parameter_mapping
__Pyx_INCREF(__pyx_v_parameter_mapping); __Pyx_GIVEREF(__pyx_v_parameter_mapping); __Pyx_GOTREF(__pyx_v_self->parameter_mapping); __Pyx_DECREF(__pyx_v_self->parameter_mapping); __pyx_v_self->parameter_mapping = __pyx_v_parameter_mapping;
+5008: self.time_dep_param_mapping = time_dep_param_mapping
__Pyx_INCREF(__pyx_v_time_dep_param_mapping); __Pyx_GIVEREF(__pyx_v_time_dep_param_mapping); __Pyx_GOTREF(__pyx_v_self->time_dep_param_mapping); __Pyx_DECREF(__pyx_v_self->time_dep_param_mapping); __pyx_v_self->time_dep_param_mapping = __pyx_v_time_dep_param_mapping;
+5009: self.param_keys = list(parameters.keys())
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->__pyx_base.param_keys); __Pyx_DECREF(__pyx_v_self->__pyx_base.param_keys); __pyx_v_self->__pyx_base.param_keys = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0;
+5010: if parameter_mapping is not None:
__pyx_t_1 = (__pyx_v_parameter_mapping != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L6;
}
+5011: self.model_param_keys = list(parameter_mapping(parameters).keys())
__Pyx_INCREF(__pyx_v_parameter_mapping); __pyx_t_6 = __pyx_v_parameter_mapping; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->model_param_keys); __Pyx_DECREF(__pyx_v_self->model_param_keys); __pyx_v_self->model_param_keys = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
+5012: elif time_dep_param_mapping is not None:
__pyx_t_2 = (__pyx_v_time_dep_param_mapping != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L6;
}
+5013: self.param_dict = parameters.copy()
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(PyDict_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 5013, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->param_dict); __Pyx_DECREF(__pyx_v_self->param_dict); __pyx_v_self->param_dict = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
+5014: self.model_param_keys = list(time_dep_param_mapping(parameters, 0).keys())
__Pyx_INCREF(__pyx_v_time_dep_param_mapping); __pyx_t_4 = __pyx_v_time_dep_param_mapping; __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_parameters, __pyx_int_0}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_5); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_parameters, __pyx_int_0}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_5); } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_int_0); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->model_param_keys); __Pyx_DECREF(__pyx_v_self->model_param_keys); __pyx_v_self->model_param_keys = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
5015: else:
+5016: self.model_param_keys = self.param_keys.copy()
/*else*/ {
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.param_keys, __pyx_n_s_copy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5016, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5016, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 5016, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_v_self->model_param_keys);
__Pyx_DECREF(__pyx_v_self->model_param_keys);
__pyx_v_self->model_param_keys = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
}
__pyx_L6:;
+5017: self.model_spec=model_spec
if (!(likely(PyDict_CheckExact(__pyx_v_model_spec))||((__pyx_v_model_spec) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_model_spec)->tp_name), 0))) __PYX_ERR(0, 5017, __pyx_L1_error) __pyx_t_4 = __pyx_v_model_spec; __Pyx_INCREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->model_spec); __Pyx_DECREF(__pyx_v_self->model_spec); __pyx_v_self->model_spec = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+5018: res = pyross.utils.parse_model_spec(model_spec, self.model_param_keys)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_parse_model_spec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_model_spec, __pyx_v_self->model_param_keys}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_model_spec, __pyx_v_self->model_param_keys}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_self->model_param_keys); __Pyx_GIVEREF(__pyx_v_self->model_param_keys); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_self->model_param_keys); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_res = __pyx_t_4; __pyx_t_4 = 0;
+5019: self.nClass = res[0]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5019, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_self->__pyx_base.nClass = __pyx_t_10;
+5020: self.class_index_dict = res[1]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 5020, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+5021: self.constant_terms = res[2]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5021, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->constant_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->constant_terms)); __pyx_v_self->constant_terms = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5022: self.linear_terms = res[3]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5022, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->linear_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->linear_terms)); __pyx_v_self->linear_terms = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5023: self.infection_terms = res[4]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5023, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->infection_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->infection_terms)); __pyx_v_self->infection_terms = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5024: self.finres_terms = res[5]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5024, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->finres_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->finres_terms)); __pyx_v_self->finres_terms = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5025: self.resource_list = res[6]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5025, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->resource_list); __Pyx_DECREF(((PyObject *)__pyx_v_self->resource_list)); __pyx_v_self->resource_list = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5026: super().__init__(parameters, self.nClass, M, fi, Omega, steps, det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov)
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_Model)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_Model)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_Model)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_self)); __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_init); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.nClass); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[13] = {__pyx_t_5, __pyx_v_parameters, __pyx_t_9, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 12+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[13] = {__pyx_t_5, __pyx_v_parameters, __pyx_t_9, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 12+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_7 = PyTuple_New(12+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_8, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_8, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_7, 7+__pyx_t_8, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_7, 8+__pyx_t_8, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_7, 9+__pyx_t_8, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_7, 10+__pyx_t_8, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_7, 11+__pyx_t_8, __pyx_v_max_steps_lyapunov); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5027: if self.parameter_mapping is not None:
__pyx_t_1 = (__pyx_v_self->parameter_mapping != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+5028: parameters = self.parameter_mapping(parameters)
__Pyx_INCREF(__pyx_v_self->parameter_mapping); __pyx_t_6 = __pyx_v_self->parameter_mapping; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_parameters, __pyx_t_4); __pyx_t_4 = 0;
+5029: self.param_mapping_enabled = True
__pyx_v_self->__pyx_base.param_mapping_enabled = 1;
+5030: if self.time_dep_param_mapping is not None:
__pyx_t_2 = (__pyx_v_self->time_dep_param_mapping != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L8;
}
+5031: self.det_model = pyross.deterministic.Model(model_spec, parameters, M, fi*Omega, time_dep_param_mapping=time_dep_param_mapping)
__pyx_t_4 = PyNumber_Multiply(__pyx_v_fi, __pyx_v_Omega); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_M); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_time_dep_param_mapping, __pyx_v_time_dep_param_mapping) < 0) __PYX_ERR(0, 5031, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_Model), __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_Model *)__pyx_t_7); __pyx_t_7 = 0;
+5032: self.param_mapping_enabled = True
__pyx_v_self->__pyx_base.param_mapping_enabled = 1;
5033: else:
+5034: self.det_model = pyross.deterministic.Model(model_spec, parameters, M, fi*Omega)
/*else*/ {
__pyx_t_7 = PyNumber_Multiply(__pyx_v_fi, __pyx_v_Omega); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5034, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5034, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_model_spec);
__Pyx_GIVEREF(__pyx_v_model_spec);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_model_spec);
__Pyx_INCREF(__pyx_v_parameters);
__Pyx_GIVEREF(__pyx_v_parameters);
PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_parameters);
__Pyx_INCREF(__pyx_v_M);
__Pyx_GIVEREF(__pyx_v_M);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_M);
__Pyx_GIVEREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_7);
__pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_Model), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5034, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_v_self->det_model);
__Pyx_DECREF(((PyObject *)__pyx_v_self->det_model));
__pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_Model *)__pyx_t_7);
__pyx_t_7 = 0;
}
__pyx_L8:;
5035:
+5036: self.finres_pop = np.empty( len(self.resource_list), dtype='object') # populations for finite-resource transitions
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = ((PyObject *)__pyx_v_self->resource_list); __Pyx_INCREF(__pyx_t_7); __pyx_t_10 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_n_u_object) < 0) __PYX_ERR(0, 5036, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5036, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_9); __Pyx_GOTREF(__pyx_v_self->finres_pop); __Pyx_DECREF(((PyObject *)__pyx_v_self->finres_pop)); __pyx_v_self->finres_pop = ((PyArrayObject *)__pyx_t_9); __pyx_t_9 = 0;
+5037: for i in range(len(self.resource_list)):
__pyx_t_9 = ((PyObject *)__pyx_v_self->resource_list); __Pyx_INCREF(__pyx_t_9); __pyx_t_10 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5037, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __pyx_t_10; for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
+5038: ndx = self.resource_list[i][0]
__pyx_t_9 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->resource_list), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_ndx, __pyx_t_7); __pyx_t_7 = 0;
+5039: if self.model_parameters_length[ndx] == 1:
__pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->model_parameters_length), __pyx_v_ndx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyInt_EqObjC(__pyx_t_7, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 5039, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_1) { /* … */ goto __pyx_L11; }
+5040: self.finres_pop[i] = 0
if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->finres_pop), __pyx_v_i, __pyx_int_0, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5040, __pyx_L1_error)
5041: else:
+5042: self.finres_pop[i] = np.zeros(self.M, dtype=DTYPE)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_9);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9);
__pyx_t_9 = 0;
__pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->finres_pop), __pyx_v_i, __pyx_t_4, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5042, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__pyx_L11:;
}
5043:
+5044: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_2infection_indices(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_2infection_indices(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
Py_ssize_t __pyx_v_a;
PyObject *__pyx_v_indices = NULL;
PyObject *__pyx_v_linear_terms_indices = NULL;
PyObject *__pyx_v_term = NULL;
PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_temp = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_product_index = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Model.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_indices);
__Pyx_XDECREF(__pyx_v_linear_terms_indices);
__Pyx_XDECREF(__pyx_v_term);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_temp);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5045: cdef Py_ssize_t a = 100
__pyx_v_a = 0x64;
+5046: indices = set()
__pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_indices = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+5047: linear_terms_indices = list(range(self.linear_terms.shape[0]))
__pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_self->linear_terms->dimensions[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_linear_terms_indices = __pyx_t_1; __pyx_t_1 = 0;
5048:
5049: # Find all the infection terms
+5050: for term in self.infection_terms:
if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) { __pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms); __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->infection_terms)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5050, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 5050, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 5050, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 5050, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+5051: infective_index = term[1]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_term, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_2); __pyx_t_2 = 0;
+5052: indices.add(infective_index)
__pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_v_infective_index); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 5052, __pyx_L1_error)
5053:
5054: # Find all the terms that turn into infection terms
+5055: a = 100
__pyx_v_a = 0x64;
+5056: while a > 0:
while (1) {
__pyx_t_6 = ((__pyx_v_a > 0) != 0);
if (!__pyx_t_6) break;
+5057: a = 0
__pyx_v_a = 0;
+5058: temp = linear_terms_indices.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_linear_terms_indices, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_temp, __pyx_t_1); __pyx_t_1 = 0;
+5059: for i in linear_terms_indices:
if (likely(PyList_CheckExact(__pyx_v_linear_terms_indices)) || PyTuple_CheckExact(__pyx_v_linear_terms_indices)) { __pyx_t_1 = __pyx_v_linear_terms_indices; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_linear_terms_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5059, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 5059, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 5059, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 5059, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+5060: product_index = self.linear_terms[i, 2]
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_2); __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_7); __pyx_t_7 = 0;
+5061: if product_index in indices:
__pyx_t_6 = (__Pyx_PySet_ContainsTF(__pyx_v_product_index, __pyx_v_indices, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 5061, __pyx_L1_error) __pyx_t_8 = (__pyx_t_6 != 0); if (__pyx_t_8) { /* … */ }
+5062: a += 1
__pyx_v_a = (__pyx_v_a + 1);
+5063: indices.add(self.linear_terms[i, 1])
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5063, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5063, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 5063, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5064: temp.remove(i)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_remove); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_i) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_i); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5065: linear_terms_indices = temp
__Pyx_INCREF(__pyx_v_temp); __Pyx_DECREF_SET(__pyx_v_linear_terms_indices, __pyx_v_temp); }
+5066: return list(indices)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PySequence_List(__pyx_v_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
5067:
+5068: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_4set_params(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_4set_params(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, PyObject *__pyx_v_parameters) {
Py_ssize_t __pyx_v_nParams;
PyObject *__pyx_v_model_parameters = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.Model.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_model_parameters);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5069: if self.det_model is not None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->det_model) != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
+5070: self.set_det_model(parameters)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5071: nParams = len(self.param_keys)
__pyx_t_3 = __pyx_v_self->__pyx_base.param_keys; __Pyx_INCREF(__pyx_t_3); if (unlikely(__pyx_t_3 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 5071, __pyx_L1_error) } __pyx_t_6 = PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5071, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_nParams = __pyx_t_6;
+5072: self.param_dict = parameters.copy()
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 5072, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->param_dict); __Pyx_DECREF(__pyx_v_self->param_dict); __pyx_v_self->param_dict = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+5073: if self.parameter_mapping is not None:
__pyx_t_2 = (__pyx_v_self->parameter_mapping != Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L4;
}
+5074: model_parameters = self.parameter_mapping(parameters)
__Pyx_INCREF(__pyx_v_self->parameter_mapping); __pyx_t_4 = __pyx_v_self->parameter_mapping; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_model_parameters = __pyx_t_3; __pyx_t_3 = 0;
+5075: nParams = len(self.model_param_keys)
__pyx_t_3 = __pyx_v_self->model_param_keys;
__Pyx_INCREF(__pyx_t_3);
if (unlikely(__pyx_t_3 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(0, 5075, __pyx_L1_error)
}
__pyx_t_6 = PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5075, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_nParams = __pyx_t_6;
+5076: self.model_parameters = np.empty((nParams, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5076, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->model_parameters); __Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters)); __pyx_v_self->model_parameters = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+5077: self.model_parameters_length = np.empty(nParams, dtype=int)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, ((PyObject *)(&PyInt_Type))) < 0) __PYX_ERR(0, 5077, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5077, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->model_parameters_length); __Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters_length)); __pyx_v_self->model_parameters_length = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+5078: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L10_try_end;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
goto __pyx_L1_error;
__pyx_L10_try_end:;
}
+5079: for (i, key) in enumerate(self.model_param_keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_4 = __pyx_int_0; __pyx_t_3 = __pyx_v_self->model_param_keys; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 5079, __pyx_L5_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5079, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5079, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = __pyx_t_5; __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5080: param = model_parameters[key]
__pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_model_parameters, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5080, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_5); __pyx_t_5 = 0;
+5081: self.model_parameters[i] = pyross.utils.age_dep_rates(param, self.M, key)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pyross); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_utils); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_param, __pyx_t_11, __pyx_v_key}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 3+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_param, __pyx_t_11, __pyx_v_key}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 3+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_14 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_13, __pyx_v_param); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_13, __pyx_t_11); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_13, __pyx_v_key); __pyx_t_11 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters), __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(0, 5081, __pyx_L5_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5082: self.model_parameters_length[i] = np.size(param)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5082, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5082, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_7, __pyx_v_param) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_param); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5082, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters_length), __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(0, 5082, __pyx_L5_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5083: except KeyError:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); if (__pyx_t_13) { __Pyx_AddTraceback("pyross.inference.Model.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(0, 5083, __pyx_L7_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_5);
+5084: raise Exception('The parameters returned by parameter_mapping(...) do not contain certain keys. The keys are {}'.format(self.model_param_keys))
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_parameters_returned_by_param, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5084, __pyx_L7_except_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_14 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_11, __pyx_v_self->model_param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_self->model_param_keys); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5084, __pyx_L7_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5084, __pyx_L7_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 5084, __pyx_L7_except_error) } goto __pyx_L7_except_error; __pyx_L7_except_error:;
+5085: elif self.time_dep_param_mapping is not None:
__pyx_t_1 = (__pyx_v_self->time_dep_param_mapping != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L4;
}
+5086: self.set_time_dep_model_parameters(0)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_time_dep_model_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5086, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_int_0) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_0); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5086, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5087: else:
+5088: self.model_parameters = np.empty((nParams, self.M), dtype=DTYPE)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
__pyx_t_5 = 0;
__pyx_t_4 = 0;
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
__pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5088, __pyx_L1_error)
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_v_self->model_parameters);
__Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters));
__pyx_v_self->model_parameters = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
+5089: self.model_parameters_length = np.empty(nParams, dtype=int)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, ((PyObject *)(&PyInt_Type))) < 0) __PYX_ERR(0, 5089, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5089, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->model_parameters_length); __Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters_length)); __pyx_v_self->model_parameters_length = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+5090: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L20_try_end;
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L20_try_end:;
}
}
__pyx_L4:;
+5091: for (i, key) in enumerate(self.param_keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; __pyx_t_5 = __pyx_v_self->__pyx_base.param_keys; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 5091, __pyx_L15_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5091, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5091, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5092: param = parameters[key]
__pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_parameters, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5092, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_4); __pyx_t_4 = 0;
+5093: self.model_parameters[i] = pyross.utils.age_dep_rates(param, self.M, key)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pyross); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_utils); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_11 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_v_param, __pyx_t_14, __pyx_v_key}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 3+__pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_v_param, __pyx_t_14, __pyx_v_key}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 3+__pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_13, __pyx_v_param); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_13, __pyx_v_key); __pyx_t_14 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters), __pyx_v_i, __pyx_t_4) < 0)) __PYX_ERR(0, 5093, __pyx_L15_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5094: self.model_parameters_length[i] = np.size(param)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5094, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5094, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_7, __pyx_v_param) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_param); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5094, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters_length), __pyx_v_i, __pyx_t_4) < 0)) __PYX_ERR(0, 5094, __pyx_L15_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5095: except KeyError:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); if (__pyx_t_13) { __Pyx_AddTraceback("pyross.inference.Model.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 5095, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4);
+5096: raise Exception('The parameters passed do not contain certain keys. The keys are {}'.format(self.param_keys))
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_parameters_passed_do_not_con, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5096, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_v_self->__pyx_base.param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_self->__pyx_base.param_keys); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5096, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5096, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 5096, __pyx_L17_except_error) } goto __pyx_L17_except_error; __pyx_L17_except_error:;
5097:
+5098: def set_time_dep_model_parameters(self, tt):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_7set_time_dep_model_parameters(PyObject *__pyx_v_self, PyObject *__pyx_v_tt); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_7set_time_dep_model_parameters(PyObject *__pyx_v_self, PyObject *__pyx_v_tt) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_time_dep_model_parameters (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_6set_time_dep_model_parameters(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self), ((PyObject *)__pyx_v_tt));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_6set_time_dep_model_parameters(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, PyObject *__pyx_v_tt) {
PyObject *__pyx_v_model_parameters = NULL;
Py_ssize_t __pyx_v_nParams;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_time_dep_model_parameters", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.Model.set_time_dep_model_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_model_parameters);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5099: model_parameters = self.time_dep_param_mapping(self.param_dict, tt)
__Pyx_INCREF(__pyx_v_self->time_dep_param_mapping); __pyx_t_2 = __pyx_v_self->time_dep_param_mapping; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->param_dict, __pyx_v_tt}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5099, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->param_dict, __pyx_v_tt}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5099, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_self->param_dict); __Pyx_GIVEREF(__pyx_v_self->param_dict); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->param_dict); __Pyx_INCREF(__pyx_v_tt); __Pyx_GIVEREF(__pyx_v_tt); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_tt); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model_parameters = __pyx_t_1; __pyx_t_1 = 0;
+5100: nParams = len(self.model_param_keys)
__pyx_t_1 = __pyx_v_self->model_param_keys; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 5100, __pyx_L1_error) } __pyx_t_6 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_nParams = __pyx_t_6;
+5101: self.model_parameters = np.empty((nParams, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5101, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->model_parameters); __Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters)); __pyx_v_self->model_parameters = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+5102: self.model_parameters_length = np.empty(nParams, dtype=int)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)(&PyInt_Type))) < 0) __PYX_ERR(0, 5102, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5102, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->model_parameters_length); __Pyx_DECREF(((PyObject *)__pyx_v_self->model_parameters_length)); __pyx_v_self->model_parameters_length = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
5103:
+5104: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+5105: for (i, key) in enumerate(self.model_param_keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_2 = __pyx_int_0; __pyx_t_1 = __pyx_v_self->model_param_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 5105, __pyx_L3_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5105, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5105, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = __pyx_t_5; __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5106: param = model_parameters[key]
__pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_model_parameters, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5106, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_5); __pyx_t_5 = 0;
+5107: self.model_parameters[i] = pyross.utils.age_dep_rates(param, self.M, key)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_v_param, __pyx_t_10, __pyx_v_key}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_v_param, __pyx_t_10, __pyx_v_key}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_4, __pyx_v_param); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_4, __pyx_v_key); __pyx_t_10 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters), __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(0, 5107, __pyx_L3_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5108: self.model_parameters_length[i] = np.size(param)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5108, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5108, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_3, __pyx_v_param) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_param); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5108, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->model_parameters_length), __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(0, 5108, __pyx_L3_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5109: except KeyError:
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); if (__pyx_t_4) { __Pyx_AddTraceback("pyross.inference.Model.set_time_dep_model_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(0, 5109, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_5);
+5110: raise Exception('The parameters passed do not contain certain keys.\
__pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5110, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 5110, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:;
+5111: The keys are {}'.format(self.param_keys))
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_parameters_passed_do_not_con_2, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5111, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_12 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_v_self->__pyx_base.param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->__pyx_base.param_keys); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5111, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5112:
+5113: def set_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_9set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_9set_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_8set_det_model(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_8set_det_model(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_model", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.Model.set_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5114: if self.parameter_mapping is not None:
__pyx_t_1 = (__pyx_v_self->parameter_mapping != Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+5115: self.det_model.update_model_parameters(self.parameter_mapping(parameters))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->det_model), __pyx_n_s_update_model_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_self->parameter_mapping); __pyx_t_6 = __pyx_v_self->parameter_mapping; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5116: else:
+5117: self.det_model.update_model_parameters(parameters)
/*else*/ {
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->det_model), __pyx_n_s_update_model_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5117, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5117, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__pyx_L3:;
5118:
5119:
+5120: def make_params_dict(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_5Model_11make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_5Model_11make_params_dict(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_5Model_10make_params_dict(((struct __pyx_obj_6pyross_9inference_Model *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_5Model_10make_params_dict(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self) {
PyObject *__pyx_v_param_dict = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.Model.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5121: param_dict = self.param_dict.copy()
if (unlikely(__pyx_v_self->param_dict == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "copy");
__PYX_ERR(0, 5121, __pyx_L1_error)
}
__pyx_t_1 = PyDict_Copy(__pyx_v_self->param_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5121, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_param_dict = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+5122: return param_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_param_dict); __pyx_r = __pyx_v_param_dict; goto __pyx_L0;
5123:
+5124: cdef np.ndarray _get_r_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_5Model__get_r_from_x(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_v_xrs = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_r_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.Model._get_r_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XDECREF((PyObject *)__pyx_v_xrs);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5125: cdef:
5126: np.ndarray r
+5127: np.ndarray xrs=x.reshape(int(self.dim/self.M), self.M)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.dim / __pyx_v_self->__pyx_base.M)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5127, __pyx_L1_error) __pyx_v_xrs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+5128: if 'R' in self.class_index_dict.keys():
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
__PYX_ERR(0, 5128, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->__pyx_base.class_index_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5128, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_n_u_R, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 5128, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_9 = (__pyx_t_8 != 0);
if (__pyx_t_9) {
/* … */
goto __pyx_L3;
}
+5129: r = xrs[self.class_index_dict['R'],:]
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 5129, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
__Pyx_INCREF(__pyx_slice_);
__Pyx_GIVEREF(__pyx_slice_);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice_);
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5129, __pyx_L1_error)
__pyx_v_r = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+5130: elif self.constant_terms.size > 0:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5130, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 5130, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L3; }
+5131: r = xrs[-1,:] - np.sum(xrs[:-1,:], axis=0)
__pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__45); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__45 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_slice_); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45); __pyx_slice__46 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__46)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__46); __Pyx_GIVEREF(__pyx_slice__46); __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__47); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 5131, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5131, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; __pyx_tuple__47 = PyTuple_Pack(2, __pyx_slice__46, __pyx_slice_); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__47); __Pyx_GIVEREF(__pyx_tuple__47);
5132: else:
+5133: r = self.fi - np.sum(xrs, axis=0)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)__pyx_v_xrs));
__Pyx_GIVEREF(((PyObject *)__pyx_v_xrs));
PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_xrs));
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 5133, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyNumber_Subtract(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5133, __pyx_L1_error)
__pyx_v_r = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L3:;
+5134: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
5135:
+5136: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t,
static PyObject *__pyx_f_6pyross_9inference_5Model_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, struct __pyx_opt_args_6pyross_9inference_5Model_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.Model.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_5Model_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+5137: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
5138: cdef:
+5139: Py_ssize_t nClass=self.nClass, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+5140: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
+5141: double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 5141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+5142: double [:] fi=self.fi
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 5142, __pyx_L1_error) __pyx_v_fi = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+5143: self.CM = self.contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->__pyx_base.contactMatrix); __pyx_t_4 = __pyx_v_self->__pyx_base.contactMatrix; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5143, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+5144: if self.time_dep_param_mapping is not None:
__pyx_t_8 = (__pyx_v_self->time_dep_param_mapping != Py_None);
__pyx_t_9 = (__pyx_t_8 != 0);
if (__pyx_t_9) {
/* … */
}
+5145: self.set_time_dep_model_parameters(t)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_time_dep_model_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5146: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5146, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 5146, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_9) { /* … */ }
+5147: fi = x[(nClass-1)*M:]
__pyx_t_7.data = __pyx_v_x.data;
__pyx_t_7.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
__pyx_t_10 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_7,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_10,
((__pyx_v_nClass - 1) * __pyx_v_M),
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 5147, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__pyx_v_fi = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+5148: self.fill_lambdas(x, l)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_Model *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5149: self.fill_finres_pop(x)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_Model *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_finres_pop(__pyx_v_self, __pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5150: if b_matrix:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 5150, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+5151: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_11); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B)); __pyx_v_self->__pyx_base.B = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+5152: self.noise_correlation(x, l)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Model *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5153: if jacobian:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 5153, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+5154: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5154, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J)); __pyx_v_self->__pyx_base.J = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+5155: self.jacobian(x, l)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_Model *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5156:
+5157: cdef fill_lambdas(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_5Model_fill_lambdas(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_index;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_AddTraceback("pyross.inference.Model.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5158: cdef:
+5159: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 5159, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+5160: int [:, :] infection_terms=self.infection_terms
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 5160, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
5161: double infection_rate
+5162: double [:] fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 5162, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+5163: Py_ssize_t m, n, i, infective_index, index, M=self.M, num_of_infection_terms=infection_terms.shape[0]
__pyx_t_4 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_4; __pyx_v_num_of_infection_terms = (__pyx_v_infection_terms.shape[0]);
+5164: for i in range(num_of_infection_terms):
__pyx_t_4 = __pyx_v_num_of_infection_terms;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
+5165: infective_index = infection_terms[i, 1]
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_7 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_8 * __pyx_v_infection_terms.strides[1]) )));
+5166: for m in range(M):
__pyx_t_9 = __pyx_v_M;
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_m = __pyx_t_11;
+5167: for n in range(M):
__pyx_t_12 = __pyx_v_M;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_n = __pyx_t_14;
+5168: index = n + M*infective_index
__pyx_v_index = (__pyx_v_n + (__pyx_v_M * __pyx_v_infective_index));
+5169: if fi[n]>0:
__pyx_t_8 = __pyx_v_n;
__pyx_t_15 = (((*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_8 * __pyx_v_fi.strides[0]) ))) > 0.0) != 0);
if (__pyx_t_15) {
/* … */
}
}
}
}
+5170: l[i, m] += CM[m,n]*x[index]/fi[n]
__pyx_t_8 = __pyx_v_m;
__pyx_t_7 = __pyx_v_n;
__pyx_t_16 = __pyx_v_index;
__pyx_t_17 = __pyx_v_n;
__pyx_t_18 = __pyx_v_i;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_18 * __pyx_v_l.strides[0]) ) + __pyx_t_19 * __pyx_v_l.strides[1]) )) += (((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_8 * __pyx_v_CM.strides[0]) ) + __pyx_t_7 * __pyx_v_CM.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_17 * __pyx_v_fi.strides[0]) ))));
5171:
+5172: cdef fill_finres_pop(self, double [:] x):
static PyObject *__pyx_f_6pyross_9inference_5Model_fill_finres_pop(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, __Pyx_memviewslice __pyx_v_x) {
Py_ssize_t __pyx_v_class_index;
Py_ssize_t __pyx_v_priority_index;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_ndx = NULL;
PyObject *__pyx_v_n_cohorts = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_finres_pop", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(((PyObject *)__pyx_t_16));
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_AddTraceback("pyross.inference.Model.fill_finres_pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_ndx);
__Pyx_XDECREF(__pyx_v_n_cohorts);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5173: # Calculate populations for finite resource transitions
5174: cdef:
5175: Py_ssize_t class_index, priority_index, m, i
+5176: for i in range(len(self.resource_list)):
__pyx_t_1 = ((PyObject *)__pyx_v_self->resource_list); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5176, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4;
+5177: ndx = self.resource_list[i][0]
__pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->resource_list), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_ndx, __pyx_t_5); __pyx_t_5 = 0;
+5178: n_cohorts = self.model_parameters_length[ndx]
__pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->model_parameters_length), __pyx_v_ndx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_n_cohorts, __pyx_t_5); __pyx_t_5 = 0;
+5179: if n_cohorts == 1:
__pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_v_n_cohorts, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 5179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { /* … */ goto __pyx_L5; }
+5180: self.finres_pop[i] = 0
if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->finres_pop), __pyx_v_i, __pyx_int_0, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5180, __pyx_L1_error)
5181: else:
+5182: self.finres_pop[i] = np.zeros(n_cohorts)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_1, __pyx_v_n_cohorts) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_n_cohorts);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->finres_pop), __pyx_v_i, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5182, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L5:;
+5183: for (class_index, priority_index) in self.resource_list[i][1:]:
__pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->resource_list), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { __pyx_t_5 = __pyx_t_7; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5183, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 5183, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 5183, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 5183, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 5183, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_10); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_1)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_10); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 5183, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 5183, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_10); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_class_index = __pyx_t_13; __pyx_v_priority_index = __pyx_t_14; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; }
+5184: for m in range(self.M):
__pyx_t_14 = __pyx_v_self->__pyx_base.M;
__pyx_t_13 = __pyx_t_14;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_13; __pyx_t_15+=1) {
__pyx_v_m = __pyx_t_15;
+5185: if n_cohorts == 1:
__pyx_t_7 = __Pyx_PyInt_EqObjC(__pyx_v_n_cohorts, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 5185, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_6) { /* … */ goto __pyx_L12; }
+5186: self.finres_pop[i] += x[m + self.M*class_index] * self.model_parameters[priority_index, m]
__Pyx_INCREF(((PyObject *)__pyx_v_self->finres_pop)); __pyx_t_16 = __pyx_v_self->finres_pop; __pyx_t_17 = __pyx_v_i; __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_t_16), __pyx_t_17, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = (__pyx_v_m + (__pyx_v_self->__pyx_base.M * __pyx_v_class_index)); __pyx_t_10 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_18 * __pyx_v_x.strides[0]) )))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_priority_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_11); __pyx_t_1 = 0; __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->model_parameters), __pyx_t_19); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_19 = PyNumber_Multiply(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_19); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_t_16), __pyx_t_17, __pyx_t_11, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;
5187: else:
+5188: self.finres_pop[i][m] += x[m + self.M*class_index] * self.model_parameters[priority_index, m]
/*else*/ {
__pyx_t_11 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->finres_pop), __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_17 = __pyx_v_m;
__pyx_t_19 = __Pyx_GetItemInt(__pyx_t_11, __pyx_t_17, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_19);
__pyx_t_18 = (__pyx_v_m + (__pyx_v_self->__pyx_base.M * __pyx_v_class_index));
__pyx_t_7 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_18 * __pyx_v_x.strides[0]) )))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_10 = PyInt_FromSsize_t(__pyx_v_priority_index); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_20 = PyTuple_New(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
__Pyx_GIVEREF(__pyx_t_10);
PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_10);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_t_1);
__pyx_t_10 = 0;
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->model_parameters), __pyx_t_20); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__pyx_t_20 = PyNumber_Multiply(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_19, __pyx_t_20); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
if (unlikely(__Pyx_SetItemInt(__pyx_t_11, __pyx_t_17, __pyx_t_1, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 5188, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
__pyx_L12:;
}
5189:
+5190: cdef jacobian(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_5Model_jacobian(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_rate_index;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_susceptible_index;
Py_ssize_t __pyx_v_resource_index;
Py_ssize_t __pyx_v_priority_index;
Py_ssize_t __pyx_v_probability_index;
Py_ssize_t __pyx_v_class_index;
Py_ssize_t __pyx_v_res_class_index;
Py_ssize_t __pyx_v_res_priority_index;
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_finres_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_resource_list = 0;
PyArrayObject *__pyx_v_finres_pop = 0;
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_term;
double __pyx_v_term2;
double __pyx_v_frp;
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_XDECREF(__pyx_t_25);
__Pyx_XDECREF(__pyx_t_26);
__Pyx_XDECREF(__pyx_t_27);
__Pyx_XDECREF(__pyx_t_30);
__Pyx_AddTraceback("pyross.inference.Model.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_finres_terms, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_resource_list);
__Pyx_XDECREF((PyObject *)__pyx_v_finres_pop);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5191: cdef:
+5192: Py_ssize_t i, m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
5193: Py_ssize_t rate_index, infective_index, product_index, reagent_index, susceptible_index
5194: Py_ssize_t resource_index, priority_index, probability_index, class_index, res_class_index, res_priority_index
+5195: double [:, :, :, :] J = self.J
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 5195, __pyx_L1_error) __pyx_v_J = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+5196: double [:, :] CM=self.CM
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 5196, __pyx_L1_error) __pyx_v_CM = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+5197: double [:, :] parameters=self.model_parameters
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->model_parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 5197, __pyx_L1_error) __pyx_v_parameters = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+5198: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5198, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5198, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+5199: int [:, :] finres_terms=self.finres_terms
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->finres_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5199, __pyx_L1_error) __pyx_v_finres_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+5200: np.ndarray resource_list=self.resource_list
__pyx_t_5 = ((PyObject *)__pyx_v_self->resource_list);
__Pyx_INCREF(__pyx_t_5);
__pyx_v_resource_list = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
+5201: np.ndarray finres_pop = self.finres_pop
__pyx_t_5 = ((PyObject *)__pyx_v_self->finres_pop);
__Pyx_INCREF(__pyx_t_5);
__pyx_v_finres_pop = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
5202: double [:] rate
5203: double term, term2, frp
+5204: double [:] fi=self.fi
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 5204, __pyx_L1_error) __pyx_v_fi = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
5205:
5206: # infection terms
+5207: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
+5208: rate_index = infection_terms[i, 0]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_9 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_infection_terms.strides[1]) )));
+5209: infective_index = infection_terms[i, 1]
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_10 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_9 * __pyx_v_infection_terms.strides[1]) )));
+5210: susceptible_index = infection_terms[i, 2]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 2;
__pyx_v_susceptible_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_9 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_infection_terms.strides[1]) )));
+5211: product_index = infection_terms[i, 3]
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = 3;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_10 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_9 * __pyx_v_infection_terms.strides[1]) )));
5212:
+5213: rate = parameters[rate_index]
__pyx_t_6.data = __pyx_v_parameters.data;
__pyx_t_6.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_6.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_6.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_6.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_6.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+5214: for m in range(M):
__pyx_t_11 = __pyx_v_M;
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_m = __pyx_t_13;
+5215: J[susceptible_index, m, susceptible_index, m] -= rate[m]*l[i, m]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_i;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = __pyx_v_susceptible_index;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = __pyx_v_susceptible_index;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_15 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) -= ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_9 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_10 * __pyx_v_l.strides[0]) ) + __pyx_t_14 * __pyx_v_l.strides[1]) ))));
+5216: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
+5217: J[product_index, m, susceptible_index, m] += rate[m]*l[i, m]
__pyx_t_14 = __pyx_v_m;
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = __pyx_v_m;
__pyx_t_18 = __pyx_v_product_index;
__pyx_t_17 = __pyx_v_m;
__pyx_t_16 = __pyx_v_susceptible_index;
__pyx_t_15 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_18 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_16 * __pyx_v_J.strides[2]) ) + __pyx_t_15 * __pyx_v_J.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_14 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_10 * __pyx_v_l.strides[0]) ) + __pyx_t_9 * __pyx_v_l.strides[1]) ))));
+5218: for n in range(M):
__pyx_t_20 = __pyx_v_M;
__pyx_t_21 = __pyx_t_20;
for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
__pyx_v_n = __pyx_t_22;
+5219: J[susceptible_index, m, infective_index, n] -= x[susceptible_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_9 = ((__pyx_v_susceptible_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_10 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_susceptible_index;
__pyx_t_18 = __pyx_v_m;
__pyx_t_23 = __pyx_v_infective_index;
__pyx_t_24 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_18 * __pyx_v_J.strides[1]) ) + __pyx_t_23 * __pyx_v_J.strides[2]) ) + __pyx_t_24 * __pyx_v_J.strides[3]) )) -= ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_9 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_10 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_14 * __pyx_v_CM.strides[0]) ) + __pyx_t_15 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
+5220: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
}
}
}
+5221: J[product_index, m, infective_index, n] += x[susceptible_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_16 = ((__pyx_v_susceptible_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_15 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_10 = __pyx_v_n;
__pyx_t_9 = __pyx_v_n;
__pyx_t_24 = __pyx_v_product_index;
__pyx_t_23 = __pyx_v_m;
__pyx_t_18 = __pyx_v_infective_index;
__pyx_t_17 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_24 * __pyx_v_J.strides[0]) ) + __pyx_t_23 * __pyx_v_J.strides[1]) ) + __pyx_t_18 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_15 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_14 * __pyx_v_CM.strides[0]) ) + __pyx_t_10 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_9 * __pyx_v_fi.strides[0]) ))));
5222:
5223: # linear terms
+5224: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
+5225: product_index = linear_terms[i, 2]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_9 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_linear_terms.strides[1]) )));
+5226: reagent_index = linear_terms[i, 1]
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_10 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_9 * __pyx_v_linear_terms.strides[1]) )));
+5227: rate_index = linear_terms[i, 0]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_9 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_linear_terms.strides[1]) )));
+5228: rate = parameters[rate_index]
__pyx_t_6.data = __pyx_v_parameters.data;
__pyx_t_6.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_6.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_6.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_6.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_6.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+5229: for m in range(M):
__pyx_t_11 = __pyx_v_M;
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_m = __pyx_t_13;
+5230: J[reagent_index, m, reagent_index, m] -= rate[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_9 = __pyx_v_reagent_index;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = __pyx_v_reagent_index;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_14 * __pyx_v_J.strides[1]) ) + __pyx_t_15 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_10 * __pyx_v_rate.strides[0]) )));
+5231: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
}
}
+5232: J[product_index, m, reagent_index, m] += rate[m]
__pyx_t_10 = __pyx_v_m;
__pyx_t_16 = __pyx_v_product_index;
__pyx_t_15 = __pyx_v_m;
__pyx_t_14 = __pyx_v_reagent_index;
__pyx_t_9 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_16 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_14 * __pyx_v_J.strides[2]) ) + __pyx_t_9 * __pyx_v_J.strides[3]) )) += (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_10 * __pyx_v_rate.strides[0]) )));
5233:
5234: # finite-resource terms
+5235: if finres_terms.size > 0:
__pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_finres_terms, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_t_25, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 5235, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_19) { /* … */ }
+5236: for i in range(finres_terms.shape[0]):
__pyx_t_1 = (__pyx_v_finres_terms.shape[0]);
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
+5237: resource_index = finres_terms[i, 0]
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = 0;
__pyx_v_resource_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_10 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_9 * __pyx_v_finres_terms.strides[1]) )));
+5238: rate_index = resource_list[resource_index][0]
__pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_resource_list), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_25 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_25); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_v_rate_index = __pyx_t_11;
+5239: priority_index = finres_terms[i, 1]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 1;
__pyx_v_priority_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_9 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_finres_terms.strides[1]) )));
+5240: probability_index = finres_terms[i, 2]
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = 2;
__pyx_v_probability_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_10 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_9 * __pyx_v_finres_terms.strides[1]) )));
+5241: class_index = finres_terms[i, 3]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 3;
__pyx_v_class_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_9 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_finres_terms.strides[1]) )));
+5242: reagent_index = self.finres_terms[i, 4]
__pyx_t_25 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_4); __pyx_t_25 = 0; __pyx_t_25 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->finres_terms), __pyx_t_5); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_25); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5242, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_v_reagent_index = __pyx_t_11;
+5243: product_index = self.finres_terms[i, 5]
__pyx_t_25 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __Pyx_INCREF(__pyx_int_5); __Pyx_GIVEREF(__pyx_int_5); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_5); __pyx_t_25 = 0; __pyx_t_25 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->finres_terms), __pyx_t_5); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_25); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5243, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_v_product_index = __pyx_t_11;
+5244: for m in range(M):
__pyx_t_11 = __pyx_v_M;
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_m = __pyx_t_13;
+5245: if np.size(finres_pop[resource_index]) == 1:
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_27 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_26))) { __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_26); if (likely(__pyx_t_27)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26); __Pyx_INCREF(__pyx_t_27); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_26, function); } } __pyx_t_25 = (__pyx_t_27) ? __Pyx_PyObject_Call2Args(__pyx_t_26, __pyx_t_27, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_26, __pyx_t_5); __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __pyx_t_26 = __Pyx_PyInt_EqObjC(__pyx_t_25, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_26); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 5245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; if (__pyx_t_19) { /* … */ goto __pyx_L21; }
+5246: frp = finres_pop[resource_index]
__pyx_t_26 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __pyx_t_28 = __pyx_PyFloat_AsDouble(__pyx_t_26); if (unlikely((__pyx_t_28 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __pyx_v_frp = __pyx_t_28;
5247: else:
+5248: frp = finres_pop[resource_index][m]
/*else*/ {
__pyx_t_26 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_26);
__pyx_t_25 = __Pyx_GetItemInt(__pyx_t_26, __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_25);
__Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
__pyx_t_28 = __pyx_PyFloat_AsDouble(__pyx_t_25); if (unlikely((__pyx_t_28 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5248, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
__pyx_v_frp = __pyx_t_28;
}
__pyx_L21:;
+5249: if frp > 0.5 / self.Omega:
__pyx_t_19 = ((__pyx_v_frp > (0.5 / __pyx_v_self->__pyx_base.Omega)) != 0);
if (__pyx_t_19) {
/* … */
goto __pyx_L22;
}
+5250: term = parameters[rate_index, m] * parameters[priority_index, m] \
__pyx_t_10 = __pyx_v_rate_index;
__pyx_t_9 = __pyx_v_m;
__pyx_t_14 = __pyx_v_priority_index;
__pyx_t_15 = __pyx_v_m;
+5251: * parameters[probability_index, m] / (frp * self.Omega)
__pyx_t_16 = __pyx_v_probability_index;
__pyx_t_17 = __pyx_v_m;
__pyx_v_term = ((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_10 * __pyx_v_parameters.strides[0]) ) + __pyx_t_9 * __pyx_v_parameters.strides[1]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_14 * __pyx_v_parameters.strides[0]) ) + __pyx_t_15 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_16 * __pyx_v_parameters.strides[0]) ) + __pyx_t_17 * __pyx_v_parameters.strides[1]) )))) / (__pyx_v_frp * __pyx_v_self->__pyx_base.Omega));
5252: else:
+5253: term = 0
/*else*/ {
__pyx_v_term = 0.0;
}
__pyx_L22:;
+5254: if reagent_index>-1:
__pyx_t_19 = ((__pyx_v_reagent_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
+5255: J[reagent_index, m, class_index, m] -= term
__pyx_t_17 = __pyx_v_reagent_index;
__pyx_t_16 = __pyx_v_m;
__pyx_t_15 = __pyx_v_class_index;
__pyx_t_14 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_15 * __pyx_v_J.strides[2]) ) + __pyx_t_14 * __pyx_v_J.strides[3]) )) -= __pyx_v_term;
+5256: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
+5257: J[product_index, m, class_index, m] += term
__pyx_t_14 = __pyx_v_product_index;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = __pyx_v_class_index;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_16 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) += __pyx_v_term;
+5258: if frp > 0:
__pyx_t_19 = ((__pyx_v_frp > 0.0) != 0);
if (__pyx_t_19) {
/* … */
}
+5259: term *= - x[class_index*M+m] / frp
__pyx_t_17 = ((__pyx_v_class_index * __pyx_v_M) + __pyx_v_m);
__pyx_v_term = (__pyx_v_term * ((-(*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) )))) / __pyx_v_frp));
+5260: for (res_class_index, res_priority_index) in resource_list[resource_index][1:]:
__pyx_t_25 = __Pyx_GetItemInt(((PyObject *)__pyx_v_resource_list), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_26 = __Pyx_PyObject_GetSlice(__pyx_t_25, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; if (likely(PyList_CheckExact(__pyx_t_26)) || PyTuple_CheckExact(__pyx_t_26)) { __pyx_t_25 = __pyx_t_26; __Pyx_INCREF(__pyx_t_25); __pyx_t_20 = 0; __pyx_t_29 = NULL; } else { __pyx_t_20 = -1; __pyx_t_25 = PyObject_GetIter(__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_29 = Py_TYPE(__pyx_t_25)->tp_iternext; if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 5260, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; for (;;) { if (likely(!__pyx_t_29)) { if (likely(PyList_CheckExact(__pyx_t_25))) { if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_25)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_26 = PyList_GET_ITEM(__pyx_t_25, __pyx_t_20); __Pyx_INCREF(__pyx_t_26); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 5260, __pyx_L1_error) #else __pyx_t_26 = PySequence_ITEM(__pyx_t_25, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); #endif } else { if (__pyx_t_20 >= PyTuple_GET_SIZE(__pyx_t_25)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_26 = PyTuple_GET_ITEM(__pyx_t_25, __pyx_t_20); __Pyx_INCREF(__pyx_t_26); __pyx_t_20++; if (unlikely(0 < 0)) __PYX_ERR(0, 5260, __pyx_L1_error) #else __pyx_t_26 = PySequence_ITEM(__pyx_t_25, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); #endif } } else { __pyx_t_26 = __pyx_t_29(__pyx_t_25); if (unlikely(!__pyx_t_26)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 5260, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_26); } if ((likely(PyTuple_CheckExact(__pyx_t_26))) || (PyList_CheckExact(__pyx_t_26))) { PyObject* sequence = __pyx_t_26; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 5260, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_27 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_27); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); #endif __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; } else { Py_ssize_t index = -1; __pyx_t_30 = PyObject_GetIter(__pyx_t_26); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_30); __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __pyx_t_31 = Py_TYPE(__pyx_t_30)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_31(__pyx_t_30); if (unlikely(!__pyx_t_5)) goto __pyx_L28_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_27 = __pyx_t_31(__pyx_t_30); if (unlikely(!__pyx_t_27)) goto __pyx_L28_unpacking_failed; __Pyx_GOTREF(__pyx_t_27); if (__Pyx_IternextUnpackEndCheck(__pyx_t_31(__pyx_t_30), 2) < 0) __PYX_ERR(0, 5260, __pyx_L1_error) __pyx_t_31 = NULL; __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; goto __pyx_L29_unpacking_done; __pyx_L28_unpacking_failed:; __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; __pyx_t_31 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 5260, __pyx_L1_error) __pyx_L29_unpacking_done:; } __pyx_t_21 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_21 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_t_27); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5260, __pyx_L1_error) __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __pyx_v_res_class_index = __pyx_t_21; __pyx_v_res_priority_index = __pyx_t_22; /* … */ } __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; } }
+5261: if np.size(finres_pop[resource_index]) == 1:
__Pyx_GetModuleGlobalName(__pyx_t_27, __pyx_n_s_np); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __pyx_t_27 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); __pyx_t_30 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_30 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_30)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_30); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_26 = (__pyx_t_30) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_30, __pyx_t_27) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_27); __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0; __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_t_26, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_19) { /* … */ goto __pyx_L30; }
+5262: for n in range(M):
__pyx_t_22 = __pyx_v_M;
__pyx_t_21 = __pyx_t_22;
for (__pyx_t_32 = 0; __pyx_t_32 < __pyx_t_21; __pyx_t_32+=1) {
__pyx_v_n = __pyx_t_32;
+5263: term2 = term * parameters[res_priority_index, n]
__pyx_t_17 = __pyx_v_res_priority_index;
__pyx_t_16 = __pyx_v_n;
__pyx_v_term2 = (__pyx_v_term * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_17 * __pyx_v_parameters.strides[0]) ) + __pyx_t_16 * __pyx_v_parameters.strides[1]) ))));
+5264: if reagent_index>-1:
__pyx_t_19 = ((__pyx_v_reagent_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
+5265: J[reagent_index, m, res_class_index, n] -= term2
__pyx_t_16 = __pyx_v_reagent_index;
__pyx_t_17 = __pyx_v_m;
__pyx_t_15 = __pyx_v_res_class_index;
__pyx_t_14 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_16 * __pyx_v_J.strides[0]) ) + __pyx_t_17 * __pyx_v_J.strides[1]) ) + __pyx_t_15 * __pyx_v_J.strides[2]) ) + __pyx_t_14 * __pyx_v_J.strides[3]) )) -= __pyx_v_term2;
+5266: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
}
+5267: J[product_index, m, res_class_index, n] += term2
__pyx_t_14 = __pyx_v_product_index;
__pyx_t_15 = __pyx_v_m;
__pyx_t_17 = __pyx_v_res_class_index;
__pyx_t_16 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_16 * __pyx_v_J.strides[3]) )) += __pyx_v_term2;
5268: else:
+5269: term2 = term * parameters[res_priority_index, m]
/*else*/ {
__pyx_t_16 = __pyx_v_res_priority_index;
__pyx_t_17 = __pyx_v_m;
__pyx_v_term2 = (__pyx_v_term * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_16 * __pyx_v_parameters.strides[0]) ) + __pyx_t_17 * __pyx_v_parameters.strides[1]) ))));
+5270: if reagent_index>-1:
__pyx_t_19 = ((__pyx_v_reagent_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
+5271: J[reagent_index, m, res_class_index, m] -= term2
__pyx_t_17 = __pyx_v_reagent_index;
__pyx_t_16 = __pyx_v_m;
__pyx_t_15 = __pyx_v_res_class_index;
__pyx_t_14 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_17 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_15 * __pyx_v_J.strides[2]) ) + __pyx_t_14 * __pyx_v_J.strides[3]) )) -= __pyx_v_term2;
+5272: if product_index>-1:
__pyx_t_19 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_19) {
/* … */
}
}
__pyx_L30:;
+5273: J[product_index, m, res_class_index, m] += term2
__pyx_t_14 = __pyx_v_product_index;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = __pyx_v_res_class_index;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_16 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) += __pyx_v_term2;
5274:
5275:
+5276: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_26 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __pyx_t_27 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); __pyx_t_30 = PyTuple_New(2); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_30); __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_30, 0, __pyx_t_26); __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_30, 1, __pyx_t_27); __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_27 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_27)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_27); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_25 = (__pyx_t_27) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_27, __pyx_t_30) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_30); __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0; __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5276, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_25); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_25); __pyx_t_25 = 0;
5277:
+5278: cdef noise_correlation(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_5Model_noise_correlation(struct __pyx_obj_6pyross_9inference_Model *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_class_index;
Py_ssize_t __pyx_v_rate_index;
CYTHON_UNUSED Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_overdispersion_index;
Py_ssize_t __pyx_v_susceptible_index;
Py_ssize_t __pyx_v_resource_index;
Py_ssize_t __pyx_v_priority_index;
Py_ssize_t __pyx_v_probability_index;
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_constant_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_finres_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_resource_list = 0;
PyArrayObject *__pyx_v_finres_pop = 0;
double __pyx_v_frp;
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_reagent = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_overdispersion = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Omega;
PyObject *__pyx_v_term = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_27);
__Pyx_AddTraceback("pyross.inference.Model.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_constant_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_finres_terms, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_resource_list);
__Pyx_XDECREF((PyObject *)__pyx_v_finres_pop);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1);
__Pyx_XDECREF(__pyx_v_term);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5279: cdef:
+5280: Py_ssize_t i, m, n, M=self.M, nClass=self.nClass, class_index
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1;
5281: Py_ssize_t rate_index, infective_index, product_index, reagent_index, overdispersion_index, susceptible_index
5282: Py_ssize_t resource_index, priority_index, probability_index
+5283: double [:, :, :, :] B=self.B
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 5283, __pyx_L1_error) __pyx_v_B = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+5284: double [:, :] CM=self.CM
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 5284, __pyx_L1_error) __pyx_v_CM = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+5285: double [:, :] parameters=self.model_parameters
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->model_parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 5285, __pyx_L1_error) __pyx_v_parameters = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+5286: int [:, :] constant_terms=self.constant_terms
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->constant_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5286, __pyx_L1_error) __pyx_v_constant_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+5287: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5287, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5287, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+5288: int [:, :] finres_terms=self.finres_terms
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->finres_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 5288, __pyx_L1_error) __pyx_v_finres_terms = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+5289: np.ndarray resource_list=self.resource_list
__pyx_t_5 = ((PyObject *)__pyx_v_self->resource_list);
__Pyx_INCREF(__pyx_t_5);
__pyx_v_resource_list = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
+5290: np.ndarray finres_pop = self.finres_pop
__pyx_t_5 = ((PyObject *)__pyx_v_self->finres_pop);
__Pyx_INCREF(__pyx_t_5);
__pyx_v_finres_pop = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
5291: double frp
5292: double [:] s, reagent, rate, overdispersion
+5293: double Omega=self.Omega
__pyx_t_6 = __pyx_v_self->__pyx_base.Omega; __pyx_v_Omega = __pyx_t_6;
5294:
5295:
+5296: if self.constant_terms.size > 0:
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 5296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_8) { /* … */ }
+5297: for i in range(constant_terms.shape[0]):
__pyx_t_1 = (__pyx_v_constant_terms.shape[0]);
__pyx_t_9 = __pyx_t_1;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
+5298: rate_index = constant_terms[i, 0]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_11 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_constant_terms.strides[1]) )));
+5299: class_index = constant_terms[i, 1]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 1;
__pyx_v_class_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_12 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_constant_terms.strides[1]) )));
+5300: overdispersion_index = constant_terms[i, 3]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 3;
__pyx_v_overdispersion_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_11 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_constant_terms.strides[1]) )));
+5301: rate = parameters[rate_index]
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+5302: if overdispersion_index == -1:
__pyx_t_8 = ((__pyx_v_overdispersion_index == -1L) != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L6;
}
+5303: overdispersion = np.ones(M)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ones); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_7 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_15, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1); __pyx_v_overdispersion = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
5304: else:
+5305: overdispersion = parameters[overdispersion_index]
/*else*/ {
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_overdispersion_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1);
__pyx_v_overdispersion = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
}
__pyx_L6:;
+5306: for m in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+5307: B[class_index, m, class_index, m] += rate[m]*overdispersion[m]/Omega
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_19 = __pyx_v_class_index;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_class_index;
__pyx_t_22 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_19 * __pyx_v_B.strides[0]) ) + __pyx_t_20 * __pyx_v_B.strides[1]) ) + __pyx_t_21 * __pyx_v_B.strides[2]) ) + __pyx_t_22 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_12 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_11 * __pyx_v_overdispersion.strides[0]) )))) / __pyx_v_Omega);
+5308: B[nClass-1, m, nClass-1, m] += rate[m]*overdispersion[m]/Omega
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_22 = (__pyx_v_nClass - 1);
__pyx_t_21 = __pyx_v_m;
__pyx_t_20 = (__pyx_v_nClass - 1);
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_22 * __pyx_v_B.strides[0]) ) + __pyx_t_21 * __pyx_v_B.strides[1]) ) + __pyx_t_20 * __pyx_v_B.strides[2]) ) + __pyx_t_19 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_11 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) / __pyx_v_Omega);
}
}
5309:
+5310: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_9 = __pyx_t_1;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
5311:
5312:
+5313: rate_index = infection_terms[i, 0]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_12 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_infection_terms.strides[1]) )));
+5314: infective_index = infection_terms[i, 1]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_11 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_infection_terms.strides[1]) )));
+5315: susceptible_index = infection_terms[i, 2]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 2;
__pyx_v_susceptible_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_12 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_infection_terms.strides[1]) )));
+5316: product_index = infection_terms[i, 3]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 3;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_11 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_infection_terms.strides[1]) )));
+5317: overdispersion_index = infection_terms[i, 4]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 4;
__pyx_v_overdispersion_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_12 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_infection_terms.strides[1]) )));
+5318: rate = parameters[rate_index]
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+5319: s = x[susceptible_index*M:(susceptible_index+1)*M]
__pyx_t_13.data = __pyx_v_x.data;
__pyx_t_13.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
__pyx_t_23 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_13,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_23,
(__pyx_v_susceptible_index * __pyx_v_M),
((__pyx_v_susceptible_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 5319, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__pyx_v_s = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+5320: if overdispersion_index == -1:
__pyx_t_8 = ((__pyx_v_overdispersion_index == -1L) != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L11;
}
+5321: overdispersion = np.ones(M)
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_7 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_15, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_14); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1); __pyx_v_overdispersion = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
5322: else:
+5323: overdispersion = parameters[overdispersion_index]
/*else*/ {
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_overdispersion_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1);
__pyx_v_overdispersion = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
}
__pyx_L11:;
+5324: for m in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+5325: B[susceptible_index, m, susceptible_index, m] += rate[m]*overdispersion[m]*l[i, m]*s[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_susceptible_index;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = __pyx_v_susceptible_index;
__pyx_t_26 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_22 * __pyx_v_B.strides[0]) ) + __pyx_t_24 * __pyx_v_B.strides[1]) ) + __pyx_t_25 * __pyx_v_B.strides[2]) ) + __pyx_t_26 * __pyx_v_B.strides[3]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_11 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_20 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_21 * __pyx_v_s.strides[0]) ))));
+5326: if product_index>-1:
__pyx_t_8 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_8) {
/* … */
}
}
}
+5327: B[susceptible_index, m, product_index, m] -= rate[m]*overdispersion[m]*l[i, m]*s[m]
__pyx_t_21 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = __pyx_v_i;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_26 = __pyx_v_susceptible_index;
__pyx_t_25 = __pyx_v_m;
__pyx_t_24 = __pyx_v_product_index;
__pyx_t_22 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_26 * __pyx_v_B.strides[0]) ) + __pyx_t_25 * __pyx_v_B.strides[1]) ) + __pyx_t_24 * __pyx_v_B.strides[2]) ) + __pyx_t_22 * __pyx_v_B.strides[3]) )) -= ((((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_21 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_20 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_12 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) ))));
+5328: B[product_index, m, product_index, m] += rate[m]*overdispersion[m]*l[i, m]*s[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_product_index;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = __pyx_v_product_index;
__pyx_t_26 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_22 * __pyx_v_B.strides[0]) ) + __pyx_t_24 * __pyx_v_B.strides[1]) ) + __pyx_t_25 * __pyx_v_B.strides[2]) ) + __pyx_t_26 * __pyx_v_B.strides[3]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_11 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_20 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_21 * __pyx_v_s.strides[0]) ))));
+5329: B[product_index, m, susceptible_index, m] -= rate[m]*overdispersion[m]*l[i, m]*s[m]
__pyx_t_21 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_19 = __pyx_v_i;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_26 = __pyx_v_product_index;
__pyx_t_25 = __pyx_v_m;
__pyx_t_24 = __pyx_v_susceptible_index;
__pyx_t_22 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_26 * __pyx_v_B.strides[0]) ) + __pyx_t_25 * __pyx_v_B.strides[1]) ) + __pyx_t_24 * __pyx_v_B.strides[2]) ) + __pyx_t_22 * __pyx_v_B.strides[3]) )) -= ((((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_21 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_20 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_12 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_11 * __pyx_v_s.strides[0]) ))));
5330:
+5331: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_9 = __pyx_t_1;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
+5332: product_index = linear_terms[i, 2]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_11 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_linear_terms.strides[1]) )));
+5333: reagent_index = linear_terms[i, 1]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_12 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_linear_terms.strides[1]) )));
+5334: overdispersion_index = linear_terms[i, 3]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 3;
__pyx_v_overdispersion_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_11 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_linear_terms.strides[1]) )));
+5335: reagent = x[reagent_index*M:(reagent_index+1)*M]
__pyx_t_13.data = __pyx_v_x.data;
__pyx_t_13.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
__pyx_t_23 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_13,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_23,
(__pyx_v_reagent_index * __pyx_v_M),
((__pyx_v_reagent_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 5335, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__pyx_v_reagent = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+5336: rate_index = linear_terms[i, 0]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_12 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_linear_terms.strides[1]) )));
+5337: rate = parameters[rate_index]
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+5338: if overdispersion_index == -1:
__pyx_t_8 = ((__pyx_v_overdispersion_index == -1L) != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L17;
}
+5339: overdispersion = np.ones(M)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ones); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } __pyx_t_7 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_15, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1); __pyx_v_overdispersion = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
5340: else:
+5341: overdispersion = parameters[overdispersion_index]
/*else*/ {
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_overdispersion_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1);
__pyx_v_overdispersion = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
}
__pyx_L17:;
+5342: for m in range(M): # only fill in the upper triangular form
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+5343: B[reagent_index, m, reagent_index, m] += rate[m]*overdispersion[m]*reagent[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_reagent_index;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_reagent_index;
__pyx_t_24 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_20 * __pyx_v_B.strides[0]) ) + __pyx_t_21 * __pyx_v_B.strides[1]) ) + __pyx_t_22 * __pyx_v_B.strides[2]) ) + __pyx_t_24 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_11 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_19 * __pyx_v_reagent.strides[0]) ))));
+5344: if product_index>-1:
__pyx_t_8 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_8) {
/* … */
}
}
}
+5345: B[product_index, m, product_index, m] += rate[m]*overdispersion[m]*reagent[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_24 = __pyx_v_product_index;
__pyx_t_22 = __pyx_v_m;
__pyx_t_21 = __pyx_v_product_index;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_24 * __pyx_v_B.strides[0]) ) + __pyx_t_22 * __pyx_v_B.strides[1]) ) + __pyx_t_21 * __pyx_v_B.strides[2]) ) + __pyx_t_20 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_19 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_11 * __pyx_v_reagent.strides[0]) ))));
+5346: B[reagent_index, m, product_index, m] += -rate[m]*overdispersion[m]*reagent[m]
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_reagent_index;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_product_index;
__pyx_t_24 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_20 * __pyx_v_B.strides[0]) ) + __pyx_t_21 * __pyx_v_B.strides[1]) ) + __pyx_t_22 * __pyx_v_B.strides[2]) ) + __pyx_t_24 * __pyx_v_B.strides[3]) )) += (((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_11 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_19 * __pyx_v_reagent.strides[0]) ))));
+5347: B[product_index, m, reagent_index, m] += -rate[m]*overdispersion[m]*reagent[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_12 = __pyx_v_m;
__pyx_t_11 = __pyx_v_m;
__pyx_t_24 = __pyx_v_product_index;
__pyx_t_22 = __pyx_v_m;
__pyx_t_21 = __pyx_v_reagent_index;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_24 * __pyx_v_B.strides[0]) ) + __pyx_t_22 * __pyx_v_B.strides[1]) ) + __pyx_t_21 * __pyx_v_B.strides[2]) ) + __pyx_t_20 * __pyx_v_B.strides[3]) )) += (((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_19 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_12 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_11 * __pyx_v_reagent.strides[0]) ))));
5348:
+5349: if finres_terms.size > 0:
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_finres_terms, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyObject_RichCompare(__pyx_t_14, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5349, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 5349, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_8) { /* … */ }
+5350: for i in range(finres_terms.shape[0]):
__pyx_t_1 = (__pyx_v_finres_terms.shape[0]);
__pyx_t_9 = __pyx_t_1;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
+5351: resource_index = finres_terms[i, 0]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 0;
__pyx_v_resource_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_11 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_finres_terms.strides[1]) )));
+5352: rate_index = resource_list[resource_index][0]
__pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_resource_list), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_t_14); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5352, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_rate_index = __pyx_t_16;
+5353: priority_index = finres_terms[i, 1]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 1;
__pyx_v_priority_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_12 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_finres_terms.strides[1]) )));
+5354: probability_index = finres_terms[i, 2]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 2;
__pyx_v_probability_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_11 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_finres_terms.strides[1]) )));
+5355: class_index = finres_terms[i, 3]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 3;
__pyx_v_class_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_12 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_finres_terms.strides[1]) )));
+5356: reagent_index = finres_terms[i, 4]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 4;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_11 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_finres_terms.strides[1]) )));
+5357: product_index = finres_terms[i, 5]
__pyx_t_12 = __pyx_v_i;
__pyx_t_11 = 5;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_12 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_finres_terms.strides[1]) )));
+5358: overdispersion_index = finres_terms[i, 6]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 6;
__pyx_v_overdispersion_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_finres_terms.data + __pyx_t_11 * __pyx_v_finres_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_finres_terms.strides[1]) )));
+5359: if overdispersion_index == -1:
__pyx_t_8 = ((__pyx_v_overdispersion_index == -1L) != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L24;
}
+5360: overdispersion = np.ones(M)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_14 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_15, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_14, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1); __pyx_v_overdispersion = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
5361: else:
+5362: overdispersion = parameters[overdispersion_index]
/*else*/ {
__pyx_t_13.data = __pyx_v_parameters.data;
__pyx_t_13.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_13, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_overdispersion_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
__pyx_t_13.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_13.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_13.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_13.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_overdispersion, 1);
__pyx_v_overdispersion = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
}
__pyx_L24:;
+5363: for m in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+5364: if np.size(finres_pop[resource_index]) == 1:
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_14 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_15, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyInt_EqObjC(__pyx_t_14, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 5364, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L27; }
+5365: frp = finres_pop[resource_index]
__pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5365, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_frp = __pyx_t_6;
5366: else:
+5367: frp = finres_pop[resource_index][m]
/*else*/ {
__pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_finres_pop), __pyx_v_resource_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_14 = __Pyx_GetItemInt(__pyx_t_7, __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5367, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__pyx_v_frp = __pyx_t_6;
}
__pyx_L27:;
+5368: term = parameters[rate_index, m] * parameters[priority_index, m] \
__pyx_t_12 = __pyx_v_rate_index;
__pyx_t_11 = __pyx_v_m;
__pyx_t_19 = __pyx_v_priority_index;
__pyx_t_20 = __pyx_v_m;
+5369: * parameters[probability_index, m] * overdispersion[m] * x[class_index*M+m] / (frp * self.Omega)
__pyx_t_21 = __pyx_v_probability_index;
__pyx_t_22 = __pyx_v_m;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = ((__pyx_v_class_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_14 = PyFloat_FromDouble(((((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_12 * __pyx_v_parameters.strides[0]) ) + __pyx_t_11 * __pyx_v_parameters.strides[1]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_19 * __pyx_v_parameters.strides[0]) ) + __pyx_t_20 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_21 * __pyx_v_parameters.strides[0]) ) + __pyx_t_22 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_overdispersion.data + __pyx_t_24 * __pyx_v_overdispersion.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_25 * __pyx_v_x.strides[0]) )))) / (__pyx_v_frp * __pyx_v_self->__pyx_base.Omega))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_14);
__pyx_t_14 = 0;
+5370: if reagent_index>-1:
__pyx_t_8 = ((__pyx_v_reagent_index > -1L) != 0);
if (__pyx_t_8) {
/* … */
}
+5371: B[reagent_index, m, reagent_index, m] += term
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_term); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5371, __pyx_L1_error) __pyx_t_25 = __pyx_v_reagent_index; __pyx_t_24 = __pyx_v_m; __pyx_t_22 = __pyx_v_reagent_index; __pyx_t_21 = __pyx_v_m; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_25 * __pyx_v_B.strides[0]) ) + __pyx_t_24 * __pyx_v_B.strides[1]) ) + __pyx_t_22 * __pyx_v_B.strides[2]) ) + __pyx_t_21 * __pyx_v_B.strides[3]) )) += __pyx_t_6;
+5372: if product_index>-1:
__pyx_t_8 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_8) {
/* … */
}
+5373: B[reagent_index, m, product_index, m] -= term
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_term); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5373, __pyx_L1_error) __pyx_t_21 = __pyx_v_reagent_index; __pyx_t_22 = __pyx_v_m; __pyx_t_24 = __pyx_v_product_index; __pyx_t_25 = __pyx_v_m; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_21 * __pyx_v_B.strides[0]) ) + __pyx_t_22 * __pyx_v_B.strides[1]) ) + __pyx_t_24 * __pyx_v_B.strides[2]) ) + __pyx_t_25 * __pyx_v_B.strides[3]) )) -= __pyx_t_6;
+5374: B[product_index, m, reagent_index, m] -= term
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_term); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5374, __pyx_L1_error) __pyx_t_25 = __pyx_v_product_index; __pyx_t_24 = __pyx_v_m; __pyx_t_22 = __pyx_v_reagent_index; __pyx_t_21 = __pyx_v_m; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_25 * __pyx_v_B.strides[0]) ) + __pyx_t_24 * __pyx_v_B.strides[1]) ) + __pyx_t_22 * __pyx_v_B.strides[2]) ) + __pyx_t_21 * __pyx_v_B.strides[3]) )) -= __pyx_t_6;
+5375: if product_index>-1:
__pyx_t_8 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_8) {
/* … */
}
}
}
+5376: B[product_index, m, product_index, m] += term
__pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_term); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5376, __pyx_L1_error) __pyx_t_21 = __pyx_v_product_index; __pyx_t_22 = __pyx_v_m; __pyx_t_24 = __pyx_v_product_index; __pyx_t_25 = __pyx_v_m; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_21 * __pyx_v_B.strides[0]) ) + __pyx_t_22 * __pyx_v_B.strides[1]) ) + __pyx_t_24 * __pyx_v_B.strides[2]) ) + __pyx_t_25 * __pyx_v_B.strides[3]) )) += __pyx_t_6;
5377:
+5378: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_27 = PyTuple_New(2); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_27, 1, __pyx_t_15); __pyx_t_5 = 0; __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_14 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_15, __pyx_t_27) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_27); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_27 = __Pyx_PyObject_GetItem(__pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_27); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5378, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_27); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_27); __pyx_t_27 = 0;
5379:
5380:
+5381: cdef class Spp(Model):
struct __pyx_obj_6pyross_9inference_Spp {
struct __pyx_obj_6pyross_9inference_Model __pyx_base;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_Spp {
struct __pyx_vtabstruct_6pyross_9inference_Model __pyx_base;
};
static struct __pyx_vtabstruct_6pyross_9inference_Spp *__pyx_vtabptr_6pyross_9inference_Spp;
5382: """
5383: This is a slightly more specific version of the class `Model`.
5384:
5385: `Spp` is still supported for backward compatibility.
5386:
5387: `Model` class is recommended over `Spp` for new users.
5388:
5389: The `Spp` class works like `Model` but infection terms use a single class `S`
5390: ...
5391:
5392:
5393: Parameters
5394: ----------
5395: model_spec: dict
5396: A dictionary specifying the model. See `Examples`.
5397: parameters: dict
5398: A dictionary containing the model parameters.
5399: All parameters can be float if not age-dependent, and np.array(M,) if age-dependent
5400: M: int
5401: Number of age groups.
5402: fi: np.array(M) or list
5403: Fraction of each age group.
5404: Omega: int
5405: Total population.
5406: steps: int, optional
5407: The number of internal integration steps performed between the observed points (not used in tangent space inference).
5408: For robustness, set steps to be large, lyapunov_method='LSODA'.
5409: For speed, set steps to be small (~4), lyapunov_method='euler'.
5410: For a combination of the two, choose something in between.
5411: det_method: str, optional
5412: The integration method used for deterministic integration.
5413: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
5414: lyapunov_method: str, optional
5415: The integration method used for the integration of the Lyapunov equation for the covariance.
5416: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
5417: rtol_det: float, optional
5418: relative tolerance for the deterministic integrator (default 1e-3)
5419: rtol_lyapunov: float, optional
5420: relative tolerance for the Lyapunov-type integrator (default 1e-3)
5421: max_steps_det: int, optional
5422: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
5423: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
5424: max_steps_lyapunov: int, optional
5425: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
5426: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
5427: parameter_mapping: python function, optional
5428: A user-defined function that maps the dictionary the parameters used for inference to a dictionary of parameters used in model_spec. Default is an identical mapping.
5429: time_dep_param_mapping: python function, optional
5430: As parameter_mapping, but time-dependent. The user-defined function takes time as a second argument.
5431:
5432: See `SIR_type` for a table of all the methods
5433:
5434: Examples
5435: --------
5436: An example of model_spec and parameters for SIR class with a constant influx
5437:
5438: >>> model_spec = {
5439: "classes" : ["S", "I"],
5440: "S" : {
5441: "constant" : [ ["k"] ],
5442: "infection" : [ ["I", "-beta"] ]
5443: },
5444: "I" : {
5445: "linear" : [ ["I", "-gamma"] ],
5446: "infection" : [ ["I", "beta"] ]
5447: }
5448: }
5449: >>> parameters = {
5450: 'beta': 0.1,
5451: 'gamma': 0.1,
5452: 'k': 1,
5453: }
5454: """
5455:
+5456: def __init__(self, model_spec, parameters, M, fi, Omega=1, steps=4,
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_3Spp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_3Spp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_model_spec = 0;
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
PyObject *__pyx_v_parameter_mapping = 0;
PyObject *__pyx_v_time_dep_param_mapping = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_spec,&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,&__pyx_n_s_parameter_mapping,&__pyx_n_s_time_dep_param_mapping,0};
PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[4] = ((PyObject *)__pyx_int_1);
values[5] = ((PyObject *)__pyx_int_4);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
values[8] = ((PyObject *)__pyx_float_1eneg_3);
values[9] = ((PyObject *)__pyx_float_1eneg_3);
values[10] = ((PyObject *)__pyx_int_0);
values[11] = ((PyObject *)__pyx_int_0);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_3Spp___init__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_model_spec, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov, PyObject *__pyx_v_parameter_mapping, PyObject *__pyx_v_time_dep_param_mapping) {
PyObject *__pyx_v_Xpp_model_spec = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.Spp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_Xpp_model_spec);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5457: det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0,
+5458: parameter_mapping=None, time_dep_param_mapping=None):
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model_spec)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 1); __PYX_ERR(0, 5456, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 2); __PYX_ERR(0, 5456, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, 3); __PYX_ERR(0, 5456, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameter_mapping);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_time_dep_param_mapping);
if (value) { values[13] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 5456, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_model_spec = values[0];
__pyx_v_parameters = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_Omega = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
__pyx_v_rtol_det = values[8];
__pyx_v_rtol_lyapunov = values[9];
__pyx_v_max_steps_det = values[10];
__pyx_v_max_steps_lyapunov = values[11];
__pyx_v_parameter_mapping = values[12];
__pyx_v_time_dep_param_mapping = values[13];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 5456, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp___init__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_model_spec, __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov, __pyx_v_parameter_mapping, __pyx_v_time_dep_param_mapping);
+5459: Xpp_model_spec = pyross.utils.Spp2Xpp(model_spec)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Spp2Xpp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_model_spec) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_model_spec); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_Xpp_model_spec = __pyx_t_1; __pyx_t_1 = 0;
+5460: super().__init__(Xpp_model_spec, parameters, M, fi, Omega=Omega, steps=steps,
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_Xpp_model_spec); __Pyx_GIVEREF(__pyx_v_Xpp_model_spec); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Xpp_model_spec); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_fi); __pyx_t_3 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_Omega, __pyx_v_Omega) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_steps, __pyx_v_steps) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5461: det_method=det_method, lyapunov_method=lyapunov_method, rtol_det=rtol_det, rtol_lyapunov=rtol_lyapunov, max_steps_det=max_steps_det,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_det_method, __pyx_v_det_method) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_lyapunov_method, __pyx_v_lyapunov_method) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rtol_det, __pyx_v_rtol_det) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rtol_lyapunov, __pyx_v_rtol_lyapunov) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_max_steps_det, __pyx_v_max_steps_det) < 0) __PYX_ERR(0, 5460, __pyx_L1_error)
+5462: max_steps_lyapunov=max_steps_lyapunov, parameter_mapping=parameter_mapping, time_dep_param_mapping=time_dep_param_mapping)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_max_steps_lyapunov, __pyx_v_max_steps_lyapunov) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_parameter_mapping, __pyx_v_parameter_mapping) < 0) __PYX_ERR(0, 5460, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_time_dep_param_mapping, __pyx_v_time_dep_param_mapping) < 0) __PYX_ERR(0, 5460, __pyx_L1_error)
5463:
5464: @cython.wraparound(False)
5465: @cython.boundscheck(False)
5466: @cython.cdivision(True)
5467: @cython.nonecheck(False)
+5468: cdef class SppQ(Spp):
struct __pyx_obj_6pyross_9inference_SppQ {
struct __pyx_obj_6pyross_9inference_Spp __pyx_base;
PyObject *full_model_spec;
PyObject *input_time_dep_param_mapping;
PyObject *input_param_mapping;
PyObject *testRate;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SppQ {
struct __pyx_vtabstruct_6pyross_9inference_Spp __pyx_base;
PyObject *(*full_time_dep_param_mapping)(struct __pyx_obj_6pyross_9inference_SppQ *, PyObject *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_6pyross_9inference_SppQ *__pyx_vtabptr_6pyross_9inference_SppQ;
5469: """User-defined epidemic model with quarantine stage.
5470:
5471: This is a slightly more specific version of the class `Model`.
5472:
5473: `SppQ` is still supported for backward compatibility.
5474:
5475: `Model` class is recommended over `SppQ` for new users.
5476:
5477: To initialise the SppQ model,
5478: ...
5479:
5480: Parameters
5481: ----------
5482: model_spec: dict
5483: A dictionary specifying the model. See `Examples`.
5484: parameters: dict
5485: A dictionary containing the model parameters.
5486: All parameters can be float if not age-dependent, and np.array(M,) if age-dependent
5487: testRate: python function
5488: number of tests per day and age group
5489: M: int
5490: Number of age groups.
5491: fi: np.array(M) or list
5492: Fraction of each age group.
5493: Omega: int
5494: Total population.
5495: steps: int, optional
5496: The number of internal integration steps performed between the observed points (not used in tangent space inference).
5497: For robustness, set steps to be large, lyapunov_method='LSODA'.
5498: For speed, set steps to be small (~4), lyapunov_method='euler'.
5499: For a combination of the two, choose something in between.
5500: det_method: str, optional
5501: The integration method used for deterministic integration.
5502: Choose one of 'LSODA' and 'RK45'. Default is 'LSODA'.
5503: lyapunov_method: str, optional
5504: The integration method used for the integration of the Lyapunov equation for the covariance.
5505: Choose one of 'LSODA', 'RK45', 'RK2', 'RK4' and 'euler'. Default is 'LSODA'.
5506: rtol_det: float, optional
5507: relative tolerance for the deterministic integrator (default 1e-3)
5508: rtol_lyapunov: float, optional
5509: relative tolerance for the Lyapunov-type integrator (default 1e-3)
5510: max_steps_det: int, optional
5511: Maximum number of integration steps (total) for the deterministic integrator. Default: unlimited (represented as 0)
5512: Parameters for which the integrator reaches max_steps_det are disregarded by the optimiser.
5513: max_steps_lyapunov: int, optional
5514: Maximum number of integration steps (total) for the Lyapunov-type integrator. Default: unlimited (represented as 0)
5515: Parameters for which the integrator reaches max_steps_lyapunov are disregarded by the optimiser.
5516: parameter_mapping: python function, optional
5517: A user-defined function that maps the dictionary the parameters used for inference to a dictionary of parameters used in model_spec. Default is an identical mapping.
5518: time_dep_param_mapping: python function, optional
5519: As parameter_mapping, but time-dependent. The user-defined function takes time as a second argument.
5520:
5521: See `SIR_type` for a table of all the methods
5522:
5523: Examples
5524: --------
5525: An example of model_spec and parameters for SIR class with random
5526: testing (without false positives/negatives) and quarantine
5527:
5528: >>> model_spec = {
5529: "classes" : ["S", "I"],
5530: "S" : {
5531: "infection" : [ ["I", "-beta"] ]
5532: },
5533: "I" : {
5534: "linear" : [ ["I", "-gamma"] ],
5535: "infection" : [ ["I", "beta"] ]
5536: },
5537: "test_pos" : [ "p_falsepos", "p_truepos", "p_falsepos"] ,
5538: "test_freq" : [ "tf", "tf", "tf"]
5539: }
5540: >>> parameters = {
5541: 'beta': 0.1,
5542: 'gamma': 0.1,
5543: 'p_falsepos': 0
5544: 'p_truepos': 1
5545: 'tf': 1
5546: }
5547: """
5548: cdef:
+5549: readonly dict full_model_spec
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_15full_model_spec_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_15full_model_spec_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_15full_model_spec___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_15full_model_spec___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->full_model_spec);
__pyx_r = __pyx_v_self->full_model_spec;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5550: readonly object input_time_dep_param_mapping
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_28input_time_dep_param_mapping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_28input_time_dep_param_mapping_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_28input_time_dep_param_mapping___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_28input_time_dep_param_mapping___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->input_time_dep_param_mapping);
__pyx_r = __pyx_v_self->input_time_dep_param_mapping;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5551: readonly object input_param_mapping
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_19input_param_mapping_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_19input_param_mapping_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_19input_param_mapping___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_19input_param_mapping___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->input_param_mapping);
__pyx_r = __pyx_v_self->input_param_mapping;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5552: readonly object testRate
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8testRate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8testRate_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_8testRate___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_8testRate___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->testRate);
__pyx_r = __pyx_v_self->testRate;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5553:
+5554: def __init__(self, model_spec, parameters, testRate, M, fi, Omega=1, steps=4,
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_4SppQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_4SppQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_model_spec = 0;
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_testRate = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_Omega = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
PyObject *__pyx_v_rtol_det = 0;
PyObject *__pyx_v_rtol_lyapunov = 0;
PyObject *__pyx_v_max_steps_det = 0;
PyObject *__pyx_v_max_steps_lyapunov = 0;
PyObject *__pyx_v_parameter_mapping = 0;
PyObject *__pyx_v_time_dep_param_mapping = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_spec,&__pyx_n_s_parameters,&__pyx_n_s_testRate,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_Omega,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,&__pyx_n_s_rtol_det,&__pyx_n_s_rtol_lyapunov,&__pyx_n_s_max_steps_det,&__pyx_n_s_max_steps_lyapunov,&__pyx_n_s_parameter_mapping,&__pyx_n_s_time_dep_param_mapping,0};
PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[5] = ((PyObject *)__pyx_int_1);
values[6] = ((PyObject *)__pyx_int_4);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
values[8] = ((PyObject *)__pyx_n_u_LSODA);
values[9] = ((PyObject *)__pyx_float_1eneg_3);
values[10] = ((PyObject *)__pyx_float_1eneg_3);
values[11] = ((PyObject *)__pyx_int_0);
values[12] = ((PyObject *)__pyx_int_0);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_4SppQ___init__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_model_spec, PyObject *__pyx_v_parameters, PyObject *__pyx_v_testRate, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_Omega, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method, PyObject *__pyx_v_rtol_det, PyObject *__pyx_v_rtol_lyapunov, PyObject *__pyx_v_max_steps_det, PyObject *__pyx_v_max_steps_lyapunov, PyObject *__pyx_v_parameter_mapping, PyObject *__pyx_v_time_dep_param_mapping) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SppQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5555: det_method='LSODA', lyapunov_method='LSODA', rtol_det=1e-3, rtol_lyapunov=1e-3, max_steps_det=0, max_steps_lyapunov=0, parameter_mapping=None, time_dep_param_mapping=None):
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model_spec)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 15, 1); __PYX_ERR(0, 5554, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_testRate)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 15, 2); __PYX_ERR(0, 5554, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 15, 3); __PYX_ERR(0, 5554, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 15, 4); __PYX_ERR(0, 5554, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Omega);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_det);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rtol_lyapunov);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_det);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_steps_lyapunov);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameter_mapping);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_time_dep_param_mapping);
if (value) { values[14] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 5554, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_model_spec = values[0];
__pyx_v_parameters = values[1];
__pyx_v_testRate = values[2];
__pyx_v_M = values[3];
__pyx_v_fi = values[4];
__pyx_v_Omega = values[5];
__pyx_v_steps = values[6];
__pyx_v_det_method = values[7];
__pyx_v_lyapunov_method = values[8];
__pyx_v_rtol_det = values[9];
__pyx_v_rtol_lyapunov = values[10];
__pyx_v_max_steps_det = values[11];
__pyx_v_max_steps_lyapunov = values[12];
__pyx_v_parameter_mapping = values[13];
__pyx_v_time_dep_param_mapping = values[14];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 15, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 5554, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SppQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ___init__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), __pyx_v_model_spec, __pyx_v_parameters, __pyx_v_testRate, __pyx_v_M, __pyx_v_fi, __pyx_v_Omega, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method, __pyx_v_rtol_det, __pyx_v_rtol_lyapunov, __pyx_v_max_steps_det, __pyx_v_max_steps_lyapunov, __pyx_v_parameter_mapping, __pyx_v_time_dep_param_mapping);
+5556: if parameter_mapping is not None and time_dep_param_mapping is not None:
__pyx_t_2 = (__pyx_v_parameter_mapping != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
} else {
__pyx_t_1 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_time_dep_param_mapping != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+5557: raise Exception('Specify either parameter_mapping or time_dep_param_mapping')
__pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 5557, __pyx_L1_error)
+5558: self.full_model_spec = pyross.utils.build_SppQ_model_spec(model_spec)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_build_SppQ_model_spec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_model_spec) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_model_spec); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 5558, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->full_model_spec); __Pyx_DECREF(__pyx_v_self->full_model_spec); __pyx_v_self->full_model_spec = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+5559: self.input_time_dep_param_mapping = time_dep_param_mapping
__Pyx_INCREF(__pyx_v_time_dep_param_mapping); __Pyx_GIVEREF(__pyx_v_time_dep_param_mapping); __Pyx_GOTREF(__pyx_v_self->input_time_dep_param_mapping); __Pyx_DECREF(__pyx_v_self->input_time_dep_param_mapping); __pyx_v_self->input_time_dep_param_mapping = __pyx_v_time_dep_param_mapping;
+5560: self.input_param_mapping = parameter_mapping
__Pyx_INCREF(__pyx_v_parameter_mapping); __Pyx_GIVEREF(__pyx_v_parameter_mapping); __Pyx_GOTREF(__pyx_v_self->input_param_mapping); __Pyx_DECREF(__pyx_v_self->input_param_mapping); __pyx_v_self->input_param_mapping = __pyx_v_parameter_mapping;
+5561: self.testRate = testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+5562: super().__init__(self.full_model_spec, parameters, M, fi, Omega, steps,
__pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_t_5 = PyTuple_New(12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->full_model_spec); __Pyx_GIVEREF(__pyx_v_self->full_model_spec); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self->full_model_spec); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_fi); __Pyx_INCREF(__pyx_v_Omega); __Pyx_GIVEREF(__pyx_v_Omega); PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_Omega); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_lyapunov_method); __Pyx_INCREF(__pyx_v_rtol_det); __Pyx_GIVEREF(__pyx_v_rtol_det); PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_v_rtol_det); __Pyx_INCREF(__pyx_v_rtol_lyapunov); __Pyx_GIVEREF(__pyx_v_rtol_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_rtol_lyapunov); __Pyx_INCREF(__pyx_v_max_steps_det); __Pyx_GIVEREF(__pyx_v_max_steps_det); PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_v_max_steps_det); __Pyx_INCREF(__pyx_v_max_steps_lyapunov); __Pyx_GIVEREF(__pyx_v_max_steps_lyapunov); PyTuple_SET_ITEM(__pyx_t_5, 11, __pyx_v_max_steps_lyapunov); /* … */ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+5563: det_method, lyapunov_method, rtol_det, rtol_lyapunov, max_steps_det, max_steps_lyapunov, parameter_mapping=None, time_dep_param_mapping=self.full_time_dep_param_mapping)
__pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_parameter_mapping, Py_None) < 0) __PYX_ERR(0, 5563, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_full_time_dep_param_mapping); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_time_dep_param_mapping, __pyx_t_7) < 0) __PYX_ERR(0, 5563, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5564:
5565:
+5566: cpdef full_time_dep_param_mapping(self, input_parameters, t):
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_3full_time_dep_param_mapping(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_4SppQ_full_time_dep_param_mapping(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_input_parameters, PyObject *__pyx_v_t, int __pyx_skip_dispatch) {
PyObject *__pyx_v_output_param_dict = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("full_time_dep_param_mapping", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_full_time_dep_param_mapping); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_4SppQ_3full_time_dep_param_mapping)) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_input_parameters, __pyx_v_t};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_input_parameters, __pyx_v_t};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
} else
#endif
{
__pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_input_parameters);
__Pyx_GIVEREF(__pyx_v_input_parameters);
PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_input_parameters);
__Pyx_INCREF(__pyx_v_t);
__Pyx_GIVEREF(__pyx_v_t);
PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_t);
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SppQ.full_time_dep_param_mapping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_output_param_dict);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_3full_time_dep_param_mapping(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_3full_time_dep_param_mapping(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_input_parameters = 0;
PyObject *__pyx_v_t = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("full_time_dep_param_mapping (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_parameters,&__pyx_n_s_t,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_input_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("full_time_dep_param_mapping", 1, 2, 2, 1); __PYX_ERR(0, 5566, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "full_time_dep_param_mapping") < 0)) __PYX_ERR(0, 5566, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_input_parameters = values[0];
__pyx_v_t = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("full_time_dep_param_mapping", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 5566, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SppQ.full_time_dep_param_mapping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_2full_time_dep_param_mapping(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), __pyx_v_input_parameters, __pyx_v_t);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_2full_time_dep_param_mapping(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_input_parameters, PyObject *__pyx_v_t) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("full_time_dep_param_mapping", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_4SppQ_full_time_dep_param_mapping(__pyx_v_self, __pyx_v_input_parameters, __pyx_v_t, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5566, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SppQ.full_time_dep_param_mapping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5567: cdef dict output_param_dict
+5568: if self.input_time_dep_param_mapping is not None:
__pyx_t_7 = (__pyx_v_self->input_time_dep_param_mapping != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L3;
}
+5569: output_param_dict = self.input_time_dep_param_mapping(input_parameters, t).copy()
__Pyx_INCREF(__pyx_v_self->input_time_dep_param_mapping); __pyx_t_3 = __pyx_v_self->input_time_dep_param_mapping; __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_input_parameters, __pyx_v_t}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_input_parameters, __pyx_v_t}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_input_parameters); __Pyx_GIVEREF(__pyx_v_input_parameters); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_input_parameters); __Pyx_INCREF(__pyx_v_t); __Pyx_GIVEREF(__pyx_v_t); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_t); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 5569, __pyx_L1_error) __pyx_v_output_param_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+5570: elif self.input_param_mapping is not None:
__pyx_t_8 = (__pyx_v_self->input_param_mapping != Py_None);
__pyx_t_7 = (__pyx_t_8 != 0);
if (__pyx_t_7) {
/* … */
goto __pyx_L3;
}
+5571: output_param_dict = self.input_param_mapping(input_parameters).copy()
__Pyx_INCREF(__pyx_v_self->input_param_mapping); __pyx_t_2 = __pyx_v_self->input_param_mapping; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_input_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_input_parameters); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 5571, __pyx_L1_error) __pyx_v_output_param_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
5572: else:
+5573: output_param_dict = input_parameters.copy()
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_parameters, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 5573, __pyx_L1_error)
__pyx_v_output_param_dict = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
}
__pyx_L3:;
+5574: if self.testRate is not None:
__pyx_t_7 = (__pyx_v_self->testRate != Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L4;
}
+5575: output_param_dict['tau'] = self.testRate(t)
__Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_2 = __pyx_v_self->testRate; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_v_output_param_dict == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 5575, __pyx_L1_error) } if (unlikely(PyDict_SetItem(__pyx_v_output_param_dict, __pyx_n_u_tau, __pyx_t_1) < 0)) __PYX_ERR(0, 5575, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5576: else:
+5577: output_param_dict['tau'] = 0
/*else*/ {
if (unlikely(__pyx_v_output_param_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 5577, __pyx_L1_error)
}
if (unlikely(PyDict_SetItem(__pyx_v_output_param_dict, __pyx_n_u_tau, __pyx_int_0) < 0)) __PYX_ERR(0, 5577, __pyx_L1_error)
}
__pyx_L4:;
+5578: return output_param_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_param_dict); __pyx_r = __pyx_v_output_param_dict; goto __pyx_L0;
5579:
+5580: def set_testRate(self, testRate):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_5set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_5set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_4set_testRate(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), ((PyObject *)__pyx_v_testRate));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_4set_testRate(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SppQ.set_testRate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5581: self.testRate = testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+5582: self.set_det_model(self.param_dict)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_self->__pyx_base.__pyx_base.param_dict) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->__pyx_base.__pyx_base.param_dict); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5583: